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 <[email protected]> Authored: Thu Apr 23 17:53:10 2015 +0800 Committer: Freeman Fang <[email protected]> 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); + } }
