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 11:53:30 UTC

karaf git commit: [KARAF-3693]only update the instances.properties when the read operation detect instance pid changes

Repository: karaf
Updated Branches:
  refs/heads/karaf-2.x 38eebac42 -> 6aa141a74


[KARAF-3693]only update the instances.properties when the read operation detect instance pid changes


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

Branch: refs/heads/karaf-2.x
Commit: 6aa141a74029d60495d166b6c1c0c804909b9caa
Parents: 38eebac
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:53:10 2015 +0800

----------------------------------------------------------------------
 .../karaf/admin/internal/AdminServiceImpl.java  | 26 ++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/6aa141a7/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
----------------------------------------------------------------------
diff --git a/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java b/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
index 092e6e0..45fd465 100644
--- a/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
+++ b/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
@@ -818,6 +818,7 @@ public class AdminServiceImpl implements AdminService {
     }
 
     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);
@@ -827,7 +828,7 @@ public class AdminServiceImpl implements AdminService {
                 checkPid(instance);
                 return instance.pid;
             }
-        }, false);
+        }, updateInstanceProperties);
     }
 
     String getInstanceJavaOpts(final String name) {
@@ -856,6 +857,7 @@ public class AdminServiceImpl implements AdminService {
     }
 
     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);
@@ -884,7 +886,7 @@ public class AdminServiceImpl implements AdminService {
                     return Instance.STARTING;
                 }
             }
-        }, true);
+        }, updateInstanceProperties);
     }
 
     private boolean deleteFile(File fileToDelete) {
@@ -1237,5 +1239,25 @@ public class AdminServiceImpl implements AdminService {
             }
         }, 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);
+    }
 
 }