[SECIOTSRK-679] +Fix NoSuchElementException in iotivity cloud stack +health check...
authorm.dalakov <m.dalakov@samsung.com>
Mon, 6 Nov 2017 11:14:01 +0000 (13:14 +0200)
committerm.dalakov <m.dalakov@samsung.com>
Mon, 6 Nov 2017 11:45:11 +0000 (13:45 +0200)
cloud/account/src/main/java/org/iotivity/cloud/accountserver/AccountServer.java
cloud/interface/src/main/java/org/iotivity/cloud/ciserver/CloudInterfaceServer.java
cloud/messagequeue/src/main/java/org/iotivity/cloud/mqserver/MessageQueueServer.java
cloud/resourcedirectory/src/main/java/org/iotivity/cloud/rdserver/ResourceDirectoryServer.java
cloud/stack/src/main/java/org/iotivity/cloud/util/HealthCheck.java [new file with mode: 0644]
servers/docker-compose.yml

index 31e8c97..437cbfb 100644 (file)
@@ -40,6 +40,7 @@ import org.iotivity.cloud.base.ServerSystem;
 import org.iotivity.cloud.base.resource.CloudPingResource;
 import org.iotivity.cloud.base.server.CoapServer;
 import org.iotivity.cloud.util.Log;
+import static org.iotivity.cloud.util.HealthCheck.checkSocket;
 
 /**
  *
@@ -54,29 +55,6 @@ public class AccountServer {
     private static String  webLogHost;
     private static String  dsmHost;
 
-    private static boolean healthCheck(String socket) {
-        System.out.println("health check "+socket+"...");
-        String host="";
-        String port="";
-        int hasParts = socket.indexOf(":");
-        if (hasParts > -1) {
-            String[] parts = socket.split(":");
-            host = parts[0];
-            port = parts[1];
-        }
-        else {
-            System.out.println("socket has an incorrect format...");
-            return false;
-        }
-        try (Socket s = new Socket(host, Integer.valueOf(port))) {
-            System.out.println("health check was successful");
-            return true;
-        } catch (IOException ex) {
-            System.out.println(socket+" not available...");
-            return false;
-        }
-    }
-
     public static void main(String[] args) throws Exception {
         System.out.println("-----Account SERVER-----");
         Log.Init();
@@ -91,8 +69,8 @@ public class AccountServer {
             Log.InitWebLog(webLogHost,
                     AccountServer.class.getSimpleName().toString());
 
-        while (!healthCheck(databaseHost)) {
-            Thread.sleep(2000);
+        while (!checkSocket(databaseHost)) {
+            Thread.sleep(1000);
             System.out.println("can not connect to MONGO DB...");
         }
 
@@ -117,13 +95,9 @@ public class AccountServer {
 
         serverSystem.startSystem(tlsMode);
 
-        Scanner in = new Scanner(System.in, "UTF-8");
-
         System.out.println("press 'q' to terminate");
 
-        while (in.nextLine()==null || !in.nextLine().equals("q"));
-
-        in.close();
+        while ((char)System.in.read()!='q');
 
         System.out.println("Terminating...");
 
index 5699b31..1f6db5e 100755 (executable)
@@ -154,13 +154,9 @@ public class CloudInterfaceServer {
 
         resKeepAlive.startSessionChecker(3000, 6000);
 
-        Scanner in = new Scanner(System.in);
-
         System.out.println("press 'q' to terminate");
 
-        while (!in.nextLine().equals("q"));
-
-        in.close();
+        while ((char)System.in.read()!='q');
 
         System.out.println("Terminating...");
 
index b3ce4a9..57ae7cf 100644 (file)
@@ -29,6 +29,7 @@ import org.iotivity.cloud.base.resource.CloudPingResource;
 import org.iotivity.cloud.base.server.CoapServer;
 import org.iotivity.cloud.mqserver.resources.MQBrokerResource;
 import org.iotivity.cloud.util.Log;
+import static org.iotivity.cloud.util.HealthCheck.checkSocket;
 
 public class MessageQueueServer {
 
@@ -53,6 +54,16 @@ public class MessageQueueServer {
             Log.InitWebLog(webLogHost,
                     MessageQueueServer.class.getSimpleName().toString());
 
+        while (!checkSocket(zookeeperHost)) {
+            Thread.sleep(1000);
+            System.out.println("can not connect to zookeeper...");
+        }
+
+        while (!checkSocket(kafkaHost)) {
+            Thread.sleep(1000);
+            System.out.println("can not connect to kafka...");
+        }
+
         ServerSystem serverSystem = new ServerSystem();
 
         MQBrokerResource MQBroker = new MQBrokerResource();
@@ -66,13 +77,9 @@ public class MessageQueueServer {
 
         serverSystem.startSystem(tlsMode);
 
-        Scanner in = new Scanner(System.in, "UTF-8");
-
         System.out.println("press 'q' to terminate");
 
-        while (!in.nextLine().equals("q"));
-
-        in.close();
+        while ((char)System.in.read()!='q');
 
         System.out.println("Terminating...");
 
index a1b3a09..ba78865 100644 (file)
@@ -35,6 +35,7 @@ import org.iotivity.cloud.rdserver.resources.directory.res.DiscoveryResource;
 import org.iotivity.cloud.rdserver.resources.presence.device.DevicePresenceResource;
 import org.iotivity.cloud.rdserver.resources.presence.resource.ResPresenceResource;
 import org.iotivity.cloud.util.Log;
+import static org.iotivity.cloud.util.HealthCheck.checkSocket;
 
 /**
  *
@@ -48,29 +49,6 @@ public class ResourceDirectoryServer {
     private static String  databaseHost;
     private static String  webLogHost;
 
-    private static boolean healthCheck(String socket) {
-        System.out.println("health check "+socket+"...");
-        String host="";
-        String port="";
-        int hasParts = socket.indexOf(":");
-        if (hasParts > -1) {
-            String[] parts = socket.split(":");
-            host = parts[0];
-            port = parts[1];
-        }
-        else {
-            System.out.println("socket has an incorrect format...");
-            return false;
-        }
-        try (Socket s = new Socket(host, Integer.valueOf(port))) {
-            System.out.println("health check was successful");
-            return true;
-        } catch (IOException ex) {
-            System.out.println(socket+" not available...");
-            return false;
-        }
-    }
-
     public static void main(String[] args) throws Exception {
         System.out.println("-----RD SERVER-----");
         Log.Init();
@@ -85,8 +63,8 @@ public class ResourceDirectoryServer {
             Log.InitWebLog(webLogHost,
                     ResourceDirectoryServer.class.getSimpleName().toString());
 
-        while (!healthCheck(databaseHost)) {
-            Thread.sleep(2000);
+        while (!checkSocket(databaseHost)) {
+            Thread.sleep(1000);
             System.out.println("can not connect to MONGO DB...");
         }
 
@@ -105,13 +83,9 @@ public class ResourceDirectoryServer {
 
         serverSystem.startSystem(tlsMode);
 
-        Scanner in = new Scanner(System.in);
-
         System.out.println("press 'q' to terminate");
 
-        while (in.nextLine()==null || !in.nextLine().equals("q"));
-
-        in.close();
+        while ((char)System.in.read()!='q');
 
         System.out.println("Terminating...");
 
diff --git a/cloud/stack/src/main/java/org/iotivity/cloud/util/HealthCheck.java b/cloud/stack/src/main/java/org/iotivity/cloud/util/HealthCheck.java
new file mode 100644 (file)
index 0000000..17e11bb
--- /dev/null
@@ -0,0 +1,30 @@
+package org.iotivity.cloud.util;
+
+import java.io.IOException;
+import java.net.Socket;
+
+public class HealthCheck {
+
+    public static boolean checkSocket(String socket) {
+        System.out.println("health check "+socket+"...");
+        String host="";
+        String port="";
+        int hasParts = socket.indexOf(":");
+        if (hasParts > -1) {
+            String[] parts = socket.split(":");
+            host = parts[0];
+            port = parts[1];
+        }
+        else {
+            System.out.println("socket has an incorrect format...");
+            return false;
+        }
+        try (Socket s = new Socket(host, Integer.valueOf(port))) {
+            System.out.println("health check was successful");
+            return true;
+        } catch (IOException ex) {
+            System.out.println(socket+" not available...");
+            return false;
+        }
+    }
+}
index 5c05ec7..61819f7 100644 (file)
@@ -45,4 +45,4 @@ services:
   alive:
     image: alive
     ports:
-      - "8185:8185"
\ No newline at end of file
+      - "8185:8185"