You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2015/07/07 14:15:36 UTC
[07/50] karaf git commit: [KARAF-3648] Don't update
instance.properties on shutdown, when stopped by root container
[KARAF-3648] Don't update instance.properties on shutdown, when stopped by root container
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/70c815ef
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/70c815ef
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/70c815ef
Branch: refs/heads/master
Commit: 70c815ef35ccc7c3e42c0b6bf66627549bb41461
Parents: 2092a93
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Wed Jun 17 17:12:45 2015 +0200
Committer: Grzegorz Grzybek <gr...@gmail.com>
Committed: Wed Jun 17 17:13:42 2015 +0200
----------------------------------------------------------------------
.../org/apache/karaf/main/InstanceHelper.java | 24 ++++++++++++++++++++
1 file changed, 24 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/70c815ef/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/InstanceHelper.java b/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
index f78c127..dcbc369 100644
--- a/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
+++ b/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
@@ -22,11 +22,13 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
+import java.io.RandomAccessFile;
import java.io.Writer;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.net.InetAddress;
import java.net.ServerSocket;
+import java.nio.channels.FileLock;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -60,6 +62,28 @@ public class InstanceHelper {
throw new Exception(se.getMessage());
}
}
+ // don't instance.properties if we're stopping and can't acquire lock
+ if (!isStartingInstance) {
+ RandomAccessFile raf = new RandomAccessFile(propertiesFile, "rw");
+ boolean proceed = true;
+ try {
+ FileLock lock = raf.getChannel().tryLock();
+ if (lock == null) {
+ proceed = false;
+ } else {
+ lock.release();
+ }
+ } finally {
+ // if proceed is true than we got the lock or OverlappingFileLockException
+ // but we may proceed in either case
+ raf.close();
+ }
+ if (!proceed) {
+ // we didn't acquire lock, it may mean that root container is holding the lock when
+ // stopping the child
+ return;
+ }
+ }
FileLockUtils.execute(propertiesFile, new FileLockUtils.RunnableWithProperties() {
public void run(Properties props) throws IOException {
if (props.isEmpty()) {