You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bu...@apache.org on 2015/06/23 22:43:19 UTC

svn commit: r1687131 - /uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccMonitor.java

Author: burn
Date: Tue Jun 23 20:43:19 2015
New Revision: 1687131

URL: http://svn.apache.org/r1687131
Log:
UIMA-4477 Retry failing connections when WS is bounced

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccMonitor.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccMonitor.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccMonitor.java?rev=1687131&r1=1687130&r2=1687131&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccMonitor.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccMonitor.java Tue Jun 23 20:43:19 2015
@@ -19,6 +19,7 @@
 package org.apache.uima.ducc.cli;
 
 import java.lang.management.ManagementFactory;
+import java.net.ConnectException;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -343,16 +344,25 @@ public abstract class DuccMonitor {
 		message.append(ManagementFactory.getRuntimeMXBean().getName());
 		info(message.toString());
 		debug(urlString);
-		// Poll until finished
+		// Poll until finished - retry if the WS appears to be down
+		boolean connectionFailed = false;
 		while (flag_observer.get()) {
-            DuccEventHttpDispatcherCl dispatcher = new DuccEventHttpDispatcherCl(urlString, urlTimeout);
-            MonitorInfo monitorInfo = (MonitorInfo) dispatcher.dispatchJson(MonitorInfo.class);
-			// String json = getSingleLineStatus(urlString);
-			// if (json != null) {
-			// 	debug(json);
-			// 	Gson gson = new Gson();
-			// 	MonitorInfo monitorInfo = gson
-			// 			.fromJson(json, MonitorInfo.class);
+			DuccEventHttpDispatcherCl dispatcher = null;
+			MonitorInfo monitorInfo = null;
+			try {
+				dispatcher = new DuccEventHttpDispatcherCl(urlString, urlTimeout);
+				monitorInfo = (MonitorInfo) dispatcher.dispatchJson(MonitorInfo.class);
+				if (connectionFailed) {
+					info("Connection to DUCC restored");
+					connectionFailed = false;
+				}
+			} catch (ConnectException e) {
+				if (!connectionFailed) {
+					info("Connection to DUCC failed -- retrying");
+					connectionFailed = true;
+				}
+			}
+
             if ( monitorInfo != null ) {
             	displayRemotePids(monitorInfo);
 				int stateCount = monitorInfo.stateSequence.size();
@@ -492,8 +502,6 @@ public abstract class DuccMonitor {
 						}
 					//}
 				}
-			} else {
-				error("error: accessing " + urlString);
 			}
 			long start = System.currentTimeMillis();
 			long end = start;
@@ -567,6 +575,7 @@ public abstract class DuccMonitor {
 			code = runInternal(args);
 		} catch (Exception e) {
 			messageProcessor.status("ERROR: " + e.toString());
+			e.printStackTrace();
 		}
 		debug("rc=" + code);
 		return code;