You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2015/01/03 13:40:13 UTC
svn commit: r1649195 - in
/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd:
./ fault/injector/ fsm/wi/ log/ mh/ mh/iface/ mh/impl/ timeout/
Author: degenaro
Date: Sat Jan 3 12:40:13 2015
New Revision: 1649195
URL: http://svn.apache.org/r1649195
Log:
UIMA-4069 DUCC Job Driver (JD) system classpath
Handle FSM error gracefully (should never happen!)
Added:
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/ITimeoutTask.java (with props)
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutTask.java (with props)
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/JobDriver.java
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fault/injector/FaultInjector.java
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/WiFsm.java
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/log/ErrorLogger.java
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/MessageHandler.java
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/iface/IOperatingInfo.java
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/impl/OperatingInfo.java
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutManager.java
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/JobDriver.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/JobDriver.java?rev=1649195&r1=1649194&r2=1649195&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/JobDriver.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/JobDriver.java Sat Jan 3 12:40:13 2015
@@ -33,6 +33,7 @@ import org.apache.uima.ducc.container.jd
import org.apache.uima.ducc.container.jd.classload.ProxyJobDriverErrorHandler;
import org.apache.uima.ducc.container.jd.mh.IMessageHandler;
import org.apache.uima.ducc.container.jd.mh.MessageHandler;
+import org.apache.uima.ducc.container.jd.mh.iface.IOperatingInfo.CompletionType;
import org.apache.uima.ducc.container.jd.mh.iface.remote.IRemotePid;
import org.apache.uima.ducc.container.jd.mh.iface.remote.IRemoteWorkerThread;
import org.apache.uima.ducc.container.jd.wi.IProcessStatistics;
@@ -81,6 +82,9 @@ public class JobDriver {
private JdState jdState = null;
+ private boolean killJob = false;
+ private CompletionType completionType = CompletionType.Normal;
+
private JobDriver() throws JobDriverException {
initialize();
}
@@ -191,4 +195,17 @@ public class JobDriver {
mb.append(Standardize.Label.result.get()+result);
logger.trace(location, ILogger.null_id, mb.toString());
}
+
+ public void killJob(CompletionType value) {
+ killJob = true;
+ completionType = value;
+ }
+
+ public boolean isKillJob() {
+ return killJob;
+ }
+
+ public CompletionType getCompletionType() {
+ return completionType;
+ }
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fault/injector/FaultInjector.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fault/injector/FaultInjector.java?rev=1649195&r1=1649194&r2=1649195&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fault/injector/FaultInjector.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fault/injector/FaultInjector.java Sat Jan 3 12:40:13 2015
@@ -36,6 +36,8 @@ public class FaultInjector {
private static ArrayList<String> list = new ArrayList< String>();
+ private enum Type { Once, Forever };
+
private static int seed = 1;
private static int pctFail = 25;
private static Random random = new Random(seed);
@@ -57,7 +59,7 @@ public class FaultInjector {
return list.contains(id);
}
- private static boolean missing(String location, IActionData actionData) {
+ private static boolean missing(String location, IActionData actionData, Type type) {
boolean fault = false;
if(enabled) {
if(isRegistered(actionData)) {
@@ -65,7 +67,13 @@ public class FaultInjector {
}
else {
if(random.nextInt(100) < pctFail) {
- register(actionData);
+ switch(type) {
+ case Once:
+ break;
+ case Forever:
+ register(actionData);
+ break;
+ }
fault = true;
}
}
@@ -79,11 +87,16 @@ public class FaultInjector {
public static boolean missingAck(IActionData actionData) {
String location = "missingAck";
- return missing(location, actionData);
+ Type type = Type.Once;
+ if(random.nextBoolean()) {
+ type = Type.Forever;
+ };
+ return missing(location, actionData, type);
}
public static boolean missingEnd(IActionData actionData) {
String location = "missingEnd";
- return missing(location, actionData);
+ Type type = Type.Once;
+ return missing(location, actionData, type);
}
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/WiFsm.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/WiFsm.java?rev=1649195&r1=1649194&r2=1649195&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/WiFsm.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/WiFsm.java Sat Jan 3 12:40:13 2015
@@ -30,7 +30,10 @@ import org.apache.uima.ducc.container.co
import org.apache.uima.ducc.container.common.logger.IComponent;
import org.apache.uima.ducc.container.common.logger.ILogger;
import org.apache.uima.ducc.container.common.logger.Logger;
+import org.apache.uima.ducc.container.jd.JobDriver;
+import org.apache.uima.ducc.container.jd.log.ErrorLogger;
import org.apache.uima.ducc.container.jd.log.LoggerHelper;
+import org.apache.uima.ducc.container.jd.mh.iface.IOperatingInfo.CompletionType;
public class WiFsm extends Fsm {
@@ -121,6 +124,17 @@ public class WiFsm extends Fsm {
}
@Override
+ public void transition(IEvent event, Object actionData) throws FsmException {
+ try {
+ super.transition(event, actionData);
+ }
+ catch(Exception e) {
+ ErrorLogger.record(e);
+ JobDriver.getInstance().killJob(CompletionType.Exception);
+ }
+ }
+
+ @Override
public void transitionLog(IEvent event, Object objectData) {
String location = "transition";
IActionData actionData = (IActionData) objectData;
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/log/ErrorLogger.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/log/ErrorLogger.java?rev=1649195&r1=1649194&r2=1649195&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/log/ErrorLogger.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/log/ErrorLogger.java Sat Jan 3 12:40:13 2015
@@ -29,4 +29,9 @@ public class ErrorLogger {
String location = "record";
logger.error(location, null, text);
}
+
+ public static void record(Exception e) {
+ String location = "record";
+ logger.error(location, null, e);
+ }
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/MessageHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/MessageHandler.java?rev=1649195&r1=1649194&r2=1649195&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/MessageHandler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/MessageHandler.java Sat Jan 3 12:40:13 2015
@@ -131,6 +131,10 @@ public class MessageHandler implements I
if(cms.isKillJob()) {
oi.setKillJob();
}
+ if(jd.isKillJob()) {
+ oi.setKillJob();
+ oi.setCompletionType(jd.getCompletionType());
+ }
oi.setWorkItemDispatcheds(cms.getDispatched());
oi.setWorkItemRetrys(cms.getNumberOfRetrys());
oi.setWorkItemPreemptions(cms.getNumberOfPreemptions());
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/iface/IOperatingInfo.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/iface/IOperatingInfo.java?rev=1649195&r1=1649194&r2=1649195&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/iface/IOperatingInfo.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/iface/IOperatingInfo.java Sat Jan 3 12:40:13 2015
@@ -23,6 +23,14 @@ import java.util.ArrayList;
public interface IOperatingInfo extends Serializable {
+ public enum CompletionType {
+ Normal,
+ Exception
+ }
+
+ public void setCompletionType(CompletionType value);
+ public CompletionType getCompletionType();
+
public void setJobId(String value);
public String getJobId();
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/impl/OperatingInfo.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/impl/OperatingInfo.java?rev=1649195&r1=1649194&r2=1649195&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/impl/OperatingInfo.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/impl/OperatingInfo.java Sat Jan 3 12:40:13 2015
@@ -28,6 +28,8 @@ public class OperatingInfo implements IO
private static final long serialVersionUID = 1L;
+ private CompletionType completionType = CompletionType.Normal;
+
private String jobId = null;
private String jpAe = null;
@@ -65,6 +67,16 @@ public class OperatingInfo implements IO
}
@Override
+ public void setCompletionType(CompletionType value) {
+ completionType = value;
+ }
+
+ @Override
+ public CompletionType getCompletionType() {
+ return completionType;
+ }
+
+ @Override
public void setJobId(String value) {
jobId = value;
}
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/ITimeoutTask.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/ITimeoutTask.java?rev=1649195&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/ITimeoutTask.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/ITimeoutTask.java Sat Jan 3 12:40:13 2015
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.container.jd.timeout;
+
+import java.util.concurrent.Callable;
+
+import org.apache.uima.ducc.container.common.fsm.iface.IEvent;
+import org.apache.uima.ducc.container.common.fsm.iface.IFsm;
+import org.apache.uima.ducc.container.jd.fsm.wi.IActionData;
+
+public interface ITimeoutTask extends Callable<Object> {
+
+ public IFsm getFsm();
+ public IEvent getEvent();
+ public IActionData getActionData();
+ public long getDeadline();
+}
Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/ITimeoutTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/ITimeoutTask.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutManager.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutManager.java?rev=1649195&r1=1649194&r2=1649195&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutManager.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutManager.java Sat Jan 3 12:40:13 2015
@@ -18,12 +18,23 @@
*/
package org.apache.uima.ducc.container.jd.timeout;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
import org.apache.uima.ducc.container.common.MessageBuffer;
+import org.apache.uima.ducc.container.common.fsm.iface.IEvent;
+import org.apache.uima.ducc.container.common.fsm.iface.IFsm;
import org.apache.uima.ducc.container.common.logger.IComponent;
import org.apache.uima.ducc.container.common.logger.ILogger;
import org.apache.uima.ducc.container.common.logger.Logger;
import org.apache.uima.ducc.container.jd.fsm.wi.IActionData;
+import org.apache.uima.ducc.container.jd.fsm.wi.WiFsm;
import org.apache.uima.ducc.container.jd.log.LoggerHelper;
+import org.apache.uima.ducc.container.jd.wi.IWorkItem;
public class TimeoutManager implements ITimeoutManager {
@@ -34,6 +45,13 @@ public class TimeoutManager implements I
public static TimeoutManager getInstance() {
return instance;
}
+
+ private ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);
+
+ private long ackTimeout= 60*1000;
+
+ private ConcurrentHashMap<IFsm,ITimeoutTask> mapTask = new ConcurrentHashMap<IFsm,ITimeoutTask>();
+ private ConcurrentHashMap<IFsm,ScheduledFuture<?>> mapFuture = new ConcurrentHashMap<IFsm,ScheduledFuture<?>>();
@Override
public void pendingAck(IActionData actionData) {
@@ -41,6 +59,12 @@ public class TimeoutManager implements I
try {
MessageBuffer mb = LoggerHelper.getMessageBuffer(actionData);
logger.debug(location, ILogger.null_id, mb.toString());
+ IWorkItem wi = actionData.getWorkItem();
+ IFsm fsm = wi.getFsm();
+ IEvent event = WiFsm.Ack_Timer_Pop;
+ long deadline = System.currentTimeMillis()+ackTimeout;
+ ITimeoutTask timeoutTask = new TimeoutTask(fsm, event, actionData, deadline);
+ register(fsm, timeoutTask);
}
catch(Exception e) {
logger.error(location, ILogger.null_id, e);
@@ -82,5 +106,50 @@ public class TimeoutManager implements I
logger.error(location, ILogger.null_id, e);
}
}
+
+ private boolean wip = true;
+
+ public void register(IFsm fsm, ITimeoutTask timeoutTask) {
+ String location = "register";
+ if(wip) {
+ return;
+ }
+ try {
+ mapTask.put(fsm, timeoutTask);
+ Callable<?> callable = timeoutTask;
+ long delay = timeoutTask.getDeadline() - System.currentTimeMillis();
+ TimeUnit timeUnit = TimeUnit.MILLISECONDS;
+ ScheduledFuture<?> scheduledFuture = scheduledExecutorService.schedule(callable, delay, timeUnit);
+ mapFuture.put(fsm, scheduledFuture);
+ //
+ IActionData actionData = timeoutTask.getActionData();
+ MessageBuffer mb = LoggerHelper.getMessageBuffer(actionData);
+ logger.info(location, ILogger.null_id, mb.toString());
+ }
+ catch(Exception e) {
+ logger.error(location, ILogger.null_id, e);
+ }
+ }
+ public void unregister(IFsm fsm) {
+ String location = "unregister";
+ if(wip) {
+ return;
+ }
+ try {
+ ScheduledFuture<?> scheduledFuture = mapFuture.remove(fsm);
+ if(scheduledFuture != null) {
+ scheduledFuture.cancel(false);
+ }
+ ITimeoutTask timeoutTask = mapTask.remove(fsm);
+ if(timeoutTask != null) {
+ IActionData actionData = timeoutTask.getActionData();
+ MessageBuffer mb = LoggerHelper.getMessageBuffer(actionData);
+ logger.info(location, ILogger.null_id, mb.toString());
+ }
+ }
+ catch(Exception e) {
+ logger.error(location, ILogger.null_id, e);
+ }
+ }
}
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutTask.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutTask.java?rev=1649195&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutTask.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutTask.java Sat Jan 3 12:40:13 2015
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.container.jd.timeout;
+
+import org.apache.uima.ducc.container.common.MessageBuffer;
+import org.apache.uima.ducc.container.common.Standardize;
+import org.apache.uima.ducc.container.common.fsm.iface.IEvent;
+import org.apache.uima.ducc.container.common.fsm.iface.IFsm;
+import org.apache.uima.ducc.container.common.logger.IComponent;
+import org.apache.uima.ducc.container.common.logger.ILogger;
+import org.apache.uima.ducc.container.common.logger.Logger;
+import org.apache.uima.ducc.container.jd.fsm.wi.IActionData;
+import org.apache.uima.ducc.container.jd.log.LoggerHelper;
+
+public class TimeoutTask implements ITimeoutTask {
+
+ private static Logger logger = Logger.getLogger(TimeoutTask.class, IComponent.Id.JD.name());
+
+ private IFsm fsm = null;
+ private IEvent event = null;
+ private IActionData actionData = null;
+ private long deadline = 0;
+
+ public TimeoutTask(IFsm fsm, IEvent event, IActionData actionData, long deadline) {
+ setFsm(fsm);
+ setEvent(event);
+ setActionData(actionData);
+ setDeadline(deadline);
+ }
+
+ private void setFsm(IFsm value) {
+ fsm = value;
+ }
+
+ @Override
+ public IFsm getFsm() {
+ return fsm;
+ }
+
+ private void setEvent(IEvent value) {
+ event = value;
+ }
+
+ @Override
+ public IEvent getEvent() {
+ return event;
+ }
+
+ private void setActionData(IActionData value) {
+ actionData = value;
+ }
+
+ @Override
+ public IActionData getActionData() {
+ return actionData;
+ }
+
+ private void setDeadline(long value) {
+ deadline = value;
+ }
+
+ @Override
+ public long getDeadline() {
+ return deadline;
+ }
+
+ @Override
+ public Object call() throws Exception {
+ String location = "call";
+ MessageBuffer mb = LoggerHelper.getMessageBuffer(actionData);
+ mb.append(Standardize.Label.event.get()+event.getName());
+ logger.warn(location, ILogger.null_id, mb.toString());
+ TimeoutManager.getInstance().unregister(fsm);
+ fsm.transition(event, actionData);
+ return null;
+ }
+
+}
Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/timeout/TimeoutTask.java
------------------------------------------------------------------------------
svn:mime-type = text/plain