Repository: brooklyn-server Updated Branches: refs/heads/master d73a91d17 -> 2b7a6bcc1
prevent benign error in file deletion shutdown-hook - ensure required bundle has been loaded before shutdown - fail gracefully if the deletion hook fails Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/6048a5c9 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/6048a5c9 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/6048a5c9 Branch: refs/heads/master Commit: 6048a5c968236fa997e9b3cd627402012d6d1736 Parents: 9795c47 Author: Alex Heneveld <[email protected]> Authored: Sat Jul 22 01:39:28 2017 +0100 Committer: Alex Heneveld <[email protected]> Committed: Sat Jul 22 01:40:14 2017 +0100 ---------------------------------------------------------------------- .../java/org/apache/brooklyn/util/os/Os.java | 24 +++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6048a5c9/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java ---------------------------------------------------------------------- diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java b/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java index f1c35dc..a4eaf6b 100644 --- a/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java +++ b/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java @@ -49,6 +49,7 @@ import com.google.common.base.Splitter; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; +import com.google.common.collect.Ordering; import com.google.common.io.ByteStreams; import com.google.common.io.Files; @@ -317,21 +318,28 @@ public class Os { private static final Map<String,FileDeletionHook> deletions = new LinkedHashMap<String, Os.FileDeletionHook>(); private static void addShutdownFileDeletionHook(String path, FileDeletionHook hook) { + // ensure Ordering class is loaded (else shutdown hook will fail as it can't load that class when shutting down) + Ordering.<Integer>natural(); synchronized (deletions) { if (deletions.isEmpty()) { Thread shutdownHook = new Thread() { @Override public void run() { - synchronized (deletions) { - List<String> pathsToDelete = new ArrayList<String>(deletions.keySet()); - Collections.sort(pathsToDelete, Strings.lengthComparator().reverse()); - for (String path: pathsToDelete) { - try { - deletions.remove(path).run(); - } catch (Exception e) { - log.warn("Unable to delete '"+path+"' on shutdown: "+e); + log.debug("Shutting down, deleting: "+deletions); + try { + synchronized (deletions) { + List<String> pathsToDelete = new ArrayList<String>(deletions.keySet()); + Collections.sort(pathsToDelete, Strings.lengthComparator().reverse()); + for (String path: pathsToDelete) { + try { + deletions.remove(path).run(); + } catch (Exception e) { + log.warn("Unable to delete '"+path+"' on shutdown: "+e); + } } } + } catch (Exception e) { + log.warn("Unable to delete one or mort paths ("+deletions+") on shutdown: "+e); } } };
