Repository: karaf
Updated Branches:
  refs/heads/karaf-3.0.x 3431c8258 -> 9899e43a1


[KARAF-3693]only update the instances.properties when the read operation detect 
instance pid changes
(cherry picked from commit 6aa141a74029d60495d166b6c1c0c804909b9caa)


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/9899e43a
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/9899e43a
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/9899e43a

Branch: refs/heads/karaf-3.0.x
Commit: 9899e43a117c95d79cec605f5358ee3e22f6b63a
Parents: 3431c82
Author: Freeman Fang <[email protected]>
Authored: Thu Apr 23 17:53:10 2015 +0800
Committer: Freeman Fang <[email protected]>
Committed: Thu Apr 23 17:55:03 2015 +0800

----------------------------------------------------------------------
 .../core/internal/InstanceServiceImpl.java      | 26 ++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/9899e43a/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
 
b/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
index c889ffc..724a625 100644
--- 
a/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
+++ 
b/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
@@ -834,6 +834,7 @@ public class InstanceServiceImpl implements InstanceService 
{
     }
 
     int getInstancePid(final String name) {
+        boolean updateInstanceProperties = isInstancePidNeedUpdate(name);
         return execute(new Task<Integer>() {
             public Integer call(State state) throws IOException {
                 InstanceState instance = state.instances.get(name);
@@ -843,7 +844,7 @@ public class InstanceServiceImpl implements InstanceService 
{
                 checkPid(instance);
                 return instance.pid;
             }
-        }, false);
+        }, updateInstanceProperties);
     }
 
     String getInstanceJavaOpts(final String name) {
@@ -872,6 +873,7 @@ public class InstanceServiceImpl implements InstanceService 
{
     }
 
     String getInstanceState(final String name) {
+        boolean updateInstanceProperties = isInstancePidNeedUpdate(name);
         return execute(new Task<String>() {
             public String call(State state) throws IOException {
                 InstanceState instance = state.instances.get(name);
@@ -900,7 +902,7 @@ public class InstanceServiceImpl implements InstanceService 
{
                     return Instance.STARTING;
                 }
             }
-        }, true);
+        }, updateInstanceProperties);
     }
 
     private boolean deleteFile(File fileToDelete) {
@@ -1240,5 +1242,25 @@ public class InstanceServiceImpl implements 
InstanceService {
             }
         }, true);
     }
+    
+    private Boolean isInstancePidNeedUpdate(final String name) {
+        return execute(new Task<Boolean>() {
+            public Boolean call(State state) throws IOException {
+                InstanceState instance = state.instances.get(name);
+                if (instance == null) {
+                    throw new IllegalArgumentException("Instance " + name + " 
not found");
+                }
+                int origialPid = instance.pid;
+                checkPid(instance);
+                int newPid = instance.pid;
+                if (origialPid == newPid) {
+                    return false;
+                } else {
+                    return true;
+                }
+                
+            }
+        }, false);
+    }
 
 }

Reply via email to