You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2015/04/06 21:17:41 UTC
svn commit: r1671660 - in /uima/sandbox/uima-ducc/trunk:
uima-ducc-common/src/main/java/org/apache/uima/ducc/common/config/
uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/
Author: cwiklik
Date: Mon Apr 6 19:17:41 2015
New Revision: 1671660
URL: http://svn.apache.org/r1671660
Log:
UIMA-4321 The JP exits when configured framework error count reaches a limit. Added support for new property ducc.process.framework.error.limit to set error threshold
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/config/CommonConfiguration.java
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/HttpWorkerThread.java
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessComponent.java
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessConfiguration.java
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/config/CommonConfiguration.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/config/CommonConfiguration.java?rev=1671660&r1=1671659&r2=1671660&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/config/CommonConfiguration.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/config/CommonConfiguration.java Mon Apr 6 19:17:41 2015
@@ -204,6 +204,10 @@ public class CommonConfiguration {
@Value("#{ systemProperties['ducc.process.uima.container.class'] }")
public String uimaProcessContainerClass;
+ // Fetch the JP framework error threshold
+ @Value("#{ systemProperties['ducc.process.framework.error.limit'] }")
+ public String jpFrameworkErrorLimit;
+
// Fetch the container class
@Value("#{ systemProperties['ducc.process.thread.sleep.time'] }")
public String processThreadSleepTime;
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=1671660&r1=1671659&r2=1671660&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 Mon Apr 6 19:17:41 2015
@@ -55,16 +55,18 @@ public class HttpWorkerThread implements
new AtomicInteger();
private Map<String, IMetaCasTransaction> transactionMap =
new ConcurrentHashMap<String, IMetaCasTransaction>();
-
+ static AtomicInteger maxFrameworkFailures;
public HttpWorkerThread(JobProcessComponent component, DuccHttpClient httpClient,
Object processorInstance, CountDownLatch workerThreadCount,
- CountDownLatch threadReadyCount, Map<String, IMetaCasTransaction> transactionMap) {
+ CountDownLatch threadReadyCount, Map<String, IMetaCasTransaction> transactionMap,
+ AtomicInteger maxFrameworkFailures ) {
this.duccComponent = component;
this.httpClient = httpClient;
this.processorInstance = processorInstance;
this.workerThreadCount = workerThreadCount;
this.threadReadyCount = threadReadyCount;
this.transactionMap = transactionMap;
+ this.maxFrameworkFailures = maxFrameworkFailures;
}
@SuppressWarnings("unchecked")
public void run() {
@@ -309,9 +311,13 @@ public class HttpWorkerThread implements
}
catch (Exception e ) {
logger.error("run", null, e);
- logger.error("run", null, "Caught Unexpected Exception - Exiting Thread "+Thread.currentThread().getId() );
+ logger.error("run", null, "The Job Process Terminating Due To Framework Error");
e.printStackTrace();
- break;
+ // If max framework error count has been reached
+ // just exit the process
+ if ( maxFrameworkFailures.decrementAndGet() <= 0 ) {
+ Runtime.getRuntime().halt(-1);
+ }
} finally {
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessComponent.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/JobProcessComponent.java?rev=1671660&r1=1671659&r2=1671660&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessComponent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessComponent.java Mon Apr 6 19:17:41 2015
@@ -30,6 +30,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
import org.apache.camel.CamelContext;
import org.apache.commons.httpclient.methods.PostMethod;
@@ -57,6 +58,7 @@ implements IJobProcessor{
private int threadSleepTime = 5000; // time to sleep between GET requests if JD sends null CAS
private CountDownLatch workerThreadCount = null;
private CountDownLatch threadReadyCount=null;
+ private AtomicInteger maxFrameworkFailures = null;
ScheduledThreadPoolExecutor executor = null;
ExecutorService tpe = null;
private volatile boolean uimaASJob=false;
@@ -88,6 +90,9 @@ implements IJobProcessor{
public void setThreadSleepTime(int sleepTime) {
threadSleepTime = sleepTime;
}
+ public void setMaxFrameworkFailures(int limit) throws Exception {
+ maxFrameworkFailures = new AtomicInteger(limit);
+ }
public int getThreadSleepTime() {
return threadSleepTime;
}
@@ -251,7 +256,7 @@ implements IJobProcessor{
// Create and start worker threads that pull Work Items from the JD
Future<?>[] threadHandles = new Future<?>[scaleout];
for (int j = 0; j < scaleout; j++) {
- threadHandles[j] = tpe.submit(new HttpWorkerThread(this, httpClient, processorInstance, workerThreadCount, threadReadyCount, transactionMap));
+ threadHandles[j] = tpe.submit(new HttpWorkerThread(this, httpClient, processorInstance, workerThreadCount, threadReadyCount, transactionMap, maxFrameworkFailures));
}
// wait until all process threads initialize
threadReadyCount.await();
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessConfiguration.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/JobProcessConfiguration.java?rev=1671660&r1=1671659&r2=1671660&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessConfiguration.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessConfiguration.java Mon Apr 6 19:17:41 2015
@@ -226,7 +226,12 @@ public class JobProcessConfiguration {
common.managedServiceEndpoint = AGENT_ENDPOINT
+ serviceSocketPort + jpSocketParams;
}
-
+ if ( common.jpFrameworkErrorLimit != null ) {
+ int limit = Integer.parseInt(common.jpFrameworkErrorLimit);
+ duccComponent.setMaxFrameworkFailures(limit);
+ } else {
+ duccComponent.setMaxFrameworkFailures(2);
+ }
DuccEventDispatcher eventDispatcher = transport
.duccEventDispatcher(
common.managedProcessStateUpdateEndpoint,