You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ff...@apache.org on 2015/04/23 12:01:49 UTC

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

Repository: karaf
Updated Branches:
  refs/heads/master d419d9992 -> bc7aa1dcf


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


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

Branch: refs/heads/master
Commit: bc7aa1dcfd33ccd489e96a75920695f32a62caac
Parents: d419d99
Author: Freeman Fang <fr...@gmail.com>
Authored: Thu Apr 23 17:53:10 2015 +0800
Committer: Freeman Fang <fr...@gmail.com>
Committed: Thu Apr 23 17:58: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/bc7aa1dc/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
----------------------------------------------------------------------
diff --git a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
index 027d7f6..6831c55 100644
--- a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
+++ b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
@@ -948,6 +948,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);
@@ -957,7 +958,7 @@ public class InstanceServiceImpl implements InstanceService {
                 checkPid(instance);
                 return instance.pid;
             }
-        }, false);
+        }, updateInstanceProperties);
     }
 
     String getInstanceJavaOpts(final String name) {
@@ -986,6 +987,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);
@@ -1014,7 +1016,7 @@ public class InstanceServiceImpl implements InstanceService {
                     return Instance.STARTING;
                 }
             }
-        }, true);
+        }, updateInstanceProperties);
     }
 
     private boolean deleteFile(File fileToDelete) {
@@ -1356,6 +1358,26 @@ 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);
+    }
 
     private static class ProfileApplier {