You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ch...@apache.org on 2013/03/10 16:19:16 UTC

svn commit: r1454863 - /uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java

Author: challngr
Date: Sun Mar 10 15:19:16 2013
New Revision: 1454863

URL: http://svn.apache.org/r1454863
Log:
UIMA-2728
Serialize removal of .meta files so lingering threads don't rewrite it after a
service is deregistered.

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java?rev=1454863&r1=1454862&r2=1454863&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java Sun Mar 10 15:19:16 2013
@@ -289,20 +289,19 @@ public class ServiceSet
 
     }
 
-    void deleteProperties()
+    synchronized void deleteProperties()
     {
-        // note that we're NOT synchronized - be sure to call this in a context where that's ok
-        // we want to avoid synchronizing on file activity in case somethng hangs.  which probably
-        // hoses us anyway :(
         if ( meta_filename != null ) {
              File mf = new File(meta_filename);
              mf.delete();
          }
+        meta_filename = null;
 
          if ( props_filename != null ) {
              File pf = new File(props_filename);
              pf.delete();
          }
+         props_filename = null;
     }
 
     void setIncoming(ServiceSet sset)
@@ -530,9 +529,17 @@ public class ServiceSet
         return instances;
     }
 
-    void saveMetaProperties()
+    synchronized void saveMetaProperties()
     {
         String methodName = "saveMetaProperties";
+
+        if ( meta_filename == null ) {
+            // if this is null it was deleted and this is some kind of lingering thread updating, that
+            // we don't really want any more
+            logger.warn(methodName, id, "Meta properties is deleted, bypassing attempt to save.");
+            return;
+        }
+
         meta_props.put("stopped", ""+stopped);
         meta_props.put("service-state", ""+ getServiceState());
         meta_props.put("ping-active", "" + (serviceMeta != null));