Author: cwiklik
Date: Fri Jun 24 17:02:02 2016
New Revision: 1750136

URL: http://svn.apache.org/viewvc?rev=1750136&view=rev
Log:
UIMA-4989 - synchronized access to service state using Lock instead of 
synchronization block

Modified:
    
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/service/ServiceComponent.java

Modified: 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/service/ServiceComponent.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/service/ServiceComponent.java?rev=1750136&r1=1750135&r2=1750136&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/service/ServiceComponent.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/service/ServiceComponent.java
 Fri Jun 24 17:02:02 2016
@@ -24,6 +24,8 @@ import java.util.Properties;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.camel.CamelContext;
 import org.apache.uima.ducc.common.component.AbstractDuccComponent;
@@ -49,6 +51,7 @@ public class ServiceComponent extends Ab
        protected String dd;
        private Object processorInstance = null;
     private CountDownLatch exitLatch = new CountDownLatch(1);
+       private Lock stateLock = new ReentrantLock();
        
        public ServiceComponent(String componentName, CamelContext ctx,
                        ServiceConfiguration jpc) {
@@ -62,7 +65,8 @@ public class ServiceComponent extends Ab
        }
 
        public void setState(ProcessState state) {
-               synchronized (currentState) {
+               try {
+                       stateLock.lock();
                        if (currentState.name().equals(
                                        
ProcessState.FailedInitialization.name())) {
                                return;
@@ -71,6 +75,8 @@ public class ServiceComponent extends Ab
                                currentState = state;
                                agent.notify(currentState, 
super.getProcessJmxUrl());
                        }
+               } finally {
+                       stateLock.unlock();
                }
        }
 


Reply via email to