Author: cwiklik
Date: Fri Jun 24 17:03:04 2016
New Revision: 1750137
URL: http://svn.apache.org/viewvc?rev=1750137&view=rev
Log:
UIMA-4989 modify to use Lock instead of synchronized block to protect process
state changes
Modified:
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessComponent.java
Modified:
uima/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/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessComponent.java?rev=1750137&r1=1750136&r2=1750137&view=diff
==============================================================================
---
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessComponent.java
(original)
+++
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/JobProcessComponent.java
Fri Jun 24 17:03:04 2016
@@ -31,6 +31,8 @@ import java.util.concurrent.Future;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
import org.apache.camel.CamelContext;
import org.apache.http.client.methods.HttpPost;
@@ -60,10 +62,13 @@ implements IJobProcessor{
private AtomicInteger maxFrameworkFailures = null;
ScheduledThreadPoolExecutor executor = null;
ExecutorService tpe = null;
+ Lock stateLock = new ReentrantLock();
+
private volatile boolean uimaASJob=false;
Map<String, IMetaCasTransaction> transactionMap =
new ConcurrentHashMap<String, IMetaCasTransaction>();
+ final static Lock lock = new ReentrantLock();;
private DuccHttpClient httpClient = null;
private Object processorInstance=null;
@@ -79,7 +84,8 @@ implements IJobProcessor{
setState(state,super.getProcessJmxUrl() );
}
public void setState(ProcessState state, String message) {
- synchronized(currentState) {
+ try {
+ stateLock.lock();
if (
currentState.name().equals(ProcessState.FailedInitialization.name()) ) {
return;
}
@@ -92,8 +98,10 @@ implements IJobProcessor{
agent.notify(currentState, message);
}
+
+ } finally {
+ stateLock.unlock();
}
-
}
public void setThreadSleepTime(int sleepTime) {
threadSleepTime = sleepTime;
@@ -122,8 +130,13 @@ implements IJobProcessor{
}
public DuccLogger getLogger() {
- if ( logger == null ) {
- logger = new DuccLogger(JobProcessComponent.class);
+ try {
+ lock.lock();
+ if ( logger == null ) {
+ logger = new
DuccLogger(JobProcessComponent.class);
+ }
+ } finally {
+ lock.unlock();
}
return logger;
}