Linux: NameServer_daemon: Check All Remote Cores Even if One Core is in Bad State
authorAngela Stegmaier <angelabaker@ti.com>
Wed, 20 Jul 2016 20:51:57 +0000 (15:51 -0500)
committerAngela Stegmaier <angelabaker@ti.com>
Fri, 22 Jul 2016 19:35:39 +0000 (14:35 -0500)
The current implementation will cease checking of the remaining remote cores in
the cluster if NameServer_getRemote fails for any reason other than
NameServer_E_NOTFOUND or NameServer_E_RESOURCE. If one of the remote cores in
the cluster is in an unresponsive state, then either NameServer_E_TIMEOUT or
NameServer_E_FAIL could be returned. And when that error code is returned, no
more remote cores in the cluster will be checked by NameServer_get. So if one
core goes into a bad state, then communication becomes blocked for all remaining
cores in the cluster.

To improve error handling and allow other cores to continue communication with
the HOST even if one core has crashed, the remaining cores should continue to
be checked, regardless of an error being returned from one of the cores.

This patch modifies NameServer_get so that if NameServer_getRemote fails for
a particular core, it no longer breaks, but continues to try the remaining
cores. In this way a crashed core does not block communication with the other
cores.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
linux/src/daemon/NameServer_daemon.c

index 288b39ebf009c55d5e7d44a572202d8d2c7919f0..c1a58f08e31184fb634ea3868bfc7a92e945d564 100644 (file)
@@ -1206,9 +1206,7 @@ Int NameServer_get(NameServer_Handle handle,
                 status = NameServer_getRemote(handle, name, value, len,
                         baseId + clusterId);
 
                 status = NameServer_getRemote(handle, name, value, len,
                         baseId + clusterId);
 
-                if ((status >= 0) ||
-                    ((status < 0) && (status != NameServer_E_NOTFOUND) &&
-                                     (status != NameServer_E_RESOURCE))) {
+                if (status >= 0) {
                     break;
                 }
             }
                     break;
                 }
             }
@@ -1229,9 +1227,7 @@ Int NameServer_get(NameServer_Handle handle,
                         procId[i]);
             }
 
                         procId[i]);
             }
 
-            if ((status >= 0) ||
-                ((status < 0) && (status != NameServer_E_NOTFOUND) &&
-                                 (status != NameServer_E_RESOURCE))) {
+            if (status >= 0) {
                 break;
             }
 
                 break;
             }