Author: cwiklik
Date: Thu Jun 9 18:53:22 2016
New Revision: 1747580
URL: http://svn.apache.org/viewvc?rev=1747580&view=rev
Log:
UIMA-4660 on connection loss to JD log error and silently retry configurable
number of times
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/HttpWorkerThread.java
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java
URL:
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java?rev=1747580&r1=1747579&r2=1747580&view=diff
==============================================================================
---
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java
(original)
+++
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java
Thu Jun 9 18:53:22 2016
@@ -239,7 +239,7 @@ public class DuccHttpClient {
addCommonHeaders(transaction);
transaction.setDirection(Direction.Request);
- while( retry-- > 0 ) {
+// while( retry-- > 0 ) {
try {
// Serialize request object to XML
String body =
XStreamUtils.marshall(transaction);
@@ -292,19 +292,19 @@ public class DuccHttpClient {
}
if ( o instanceof IMetaCasTransaction) {
reply = (MetaCasTransaction)o;
- break;
+// break;
} else {
throw new
InvalidClassException("Expected IMetaCasTransaction - Instead Received
"+o.getClass().getName());
}
} catch( Exception t) {
lastError = t;
- logger.error("run", null, t);
+// logger.error("run", null, t);
}
finally {
postMethod.releaseConnection();
}
- }
+// }
if ( reply != null ) {
return reply;
} else {
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/HttpWorkerThread.java
URL:
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/HttpWorkerThread.java?rev=1747580&r1=1747579&r2=1747580&view=diff
==============================================================================
---
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/HttpWorkerThread.java
(original)
+++
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/HttpWorkerThread.java
Thu Jun 9 18:53:22 2016
@@ -32,6 +32,7 @@ import java.util.concurrent.CountDownLat
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.http.client.methods.HttpPost;
+import org.apache.http.conn.HttpHostConnectException;
import org.apache.uima.ducc.common.utils.DuccLogger;
import org.apache.uima.ducc.container.net.iface.IMetaCas;
import org.apache.uima.ducc.container.net.iface.IMetaCasTransaction;
@@ -107,7 +108,7 @@ public class HttpWorkerThread implements
} catch( SocketTimeoutException e) {
logger.warn("run", null, "Timed Out While Awaiting
Response from JD for "+command+" Request - Retrying ...");
System.out.println("Time Out While Waiting For a Reply
from JD For "+command+" Request");
- }
+ }
return transaction;
}
@@ -121,7 +122,8 @@ public class HttpWorkerThread implements
}
@SuppressWarnings("unchecked")
public void run() {
- //String command="";
+ // when this thread looses connection to its JD, log error once
+ boolean logConnectionToJD = true;
HttpPost postMethod = null;
logger.info("HttpWorkerThread.run()", null, "Starting JP Process
Thread Id:"+Thread.currentThread().getId());
Method processMethod = null;
@@ -203,18 +205,10 @@ public class HttpWorkerThread implements
int major = IdGenerator.addAndGet(1);
int minor = 0;
IMetaCasTransaction transaction =
getWork(postMethod, major, minor);
- /*
- new MetaCasTransaction();
- TransactionId tid = new TransactionId(major, minor);
- transaction.setTransactionId(tid);
- transaction.setType(Type.Get); // Tell JD you want a Work
Item
- command = Type.Get.name();
- logger.debug("HttpWorkerThread.run()", null, "Thread
Id:"+Thread.currentThread().getId()+" Requesting next WI from JD");;
- // send a request to JD and wait for a reply
- transaction = httpClient.execute(transaction, postMethod);
-
- */
-
+ if ( !logConnectionToJD ) {
+ logConnectionToJD = true; //
reset flag in case we loose connection to JD in the future
+ logger.info("run", null,
"T["+Thread.currentThread().getId()+"] - Regained Connection to JD");
+ }
// if the JD did not provide a Work Item, most likely the
CR is
// done. In such case, reduce frequency
of Get requests
@@ -395,6 +389,13 @@ public class HttpWorkerThread implements
} catch( InterruptedException e) {
logger.error("run", null, "WorkerThread
Interrupted - Terminating Thread "+Thread.currentThread().getId());
return;
+ } catch( HttpHostConnectException e) {
+ // Each thread should log once when it
looses a connection to its JD. When a connection is recovered
+ // re-enable the flag.
+ if ( logConnectionToJD ) {
+ logConnectionToJD = false;
+ logger.error("run", null,
"T["+Thread.currentThread().getId()+"] Lost Conection to JD - Will retry
"+maxFrameworkErrors+" times - Failure caused by:\t"+e);
+ }
}
catch (Exception e ) {
logger.error("run", null, e);