Author: mreutegg
Date: Tue Aug  6 13:04:53 2019
New Revision: 1864518

URL: http://svn.apache.org/viewvc?rev=1864518&view=rev
Log:
OAK-8521: Add shutdown hook for oak-run commands

Slightly modified patch provided by Vinod Holani

Modified:
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactory.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ClusterNodesCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GarbageCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepairCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactory.java?rev=1864518&r1=1864517&r2=1864518&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/MapDBMapFactory.java
 Tue Aug  6 13:04:53 2019
@@ -43,7 +43,6 @@ public class MapDBMapFactory extends Map
     public MapDBMapFactory() {
         this.db = DBMaker.newTempFileDB()
                 .deleteFilesAfterClose()
-                .closeOnJvmShutdown()
                 .transactionDisable()
                 .asyncWriteEnable()
                 .make();

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java?rev=1864518&r1=1864517&r2=1864518&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java
 Tue Aug  6 13:04:53 2019
@@ -50,7 +50,7 @@ class CheckpointsCommand implements Comm
 
         boolean success = false;
         Checkpoints cps;
-        Closer closer = Closer.create();
+        Closer closer = Utils.createCloserWithShutdownHook();
         try {
             String op = "list";
             if (options.nonOptionArguments().size() >= 2) {

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ClusterNodesCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ClusterNodesCommand.java?rev=1864518&r1=1864517&r2=1864518&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ClusterNodesCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ClusterNodesCommand.java
 Tue Aug  6 13:04:53 2019
@@ -42,7 +42,7 @@ class ClusterNodesCommand implements Com
 
     @Override
     public void execute(String... args) throws Exception {
-        Closer closer = Closer.create();
+        Closer closer = Utils.createCloserWithShutdownHook();
         try {
             String h = "clusternodes mongodb://host:port/database|jdbc:...";
             ClusterNodesOptions options = new 
ClusterNodesOptions(h).parse(args);

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java?rev=1864518&r1=1864517&r2=1864518&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
 Tue Aug  6 13:04:53 2019
@@ -119,7 +119,7 @@ public class DataStoreCheckCommand imple
                 + "[--s3ds <s3ds_config>|--fds <fds_config>|--azureblobds 
<azureblobds_config>|--nods]"
                 + " [--dump <path>] [--repoHome <repo_home>] [--track] 
[--verbose]";
 
-        try (Closer closer = Closer.create()) {
+        try (Closer closer = Utils.createCloserWithShutdownHook()) {
             // Options for operations requested
             OptionSpecBuilder idOp = parser.accepts("id", "Get ids");
             OptionSpecBuilder refOp = parser.accepts("ref", "Get references");

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java?rev=1864518&r1=1864517&r2=1864518&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java
 Tue Aug  6 13:04:53 2019
@@ -108,7 +108,7 @@ public class DataStoreCommand implements
         logCliArgs(args);
 
         boolean success = false;
-        try (Closer closer = Closer.create()) {
+        try (Closer closer = Utils.createCloserWithShutdownHook()) {
             
opts.setTempDirectory(dataStoreOpts.getWorkDir().getAbsolutePath());
             NodeStoreFixture fixture = NodeStoreFixtureProvider.create(opts);
             closer.register(fixture);
@@ -152,7 +152,7 @@ public class DataStoreCommand implements
     private void execute(NodeStoreFixture fixture,  DataStoreOptions 
dataStoreOpts, Options opts, Closer closer)
         throws Exception {
 
-        try (Closer metricsCloser = Closer.create()) {
+        try (Closer metricsCloser = Utils.createCloserWithShutdownHook()) {
             MetricsExporterFixture metricsExporterFixture =
                 MetricsExporterFixtureProvider.create(dataStoreOpts, 
fixture.getWhiteboard());
             metricsCloser.register(metricsExporterFixture);

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GarbageCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GarbageCommand.java?rev=1864518&r1=1864517&r2=1864518&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GarbageCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GarbageCommand.java
 Tue Aug  6 13:04:53 2019
@@ -27,7 +27,7 @@ class GarbageCommand implements Command
 
     @Override
     public void execute(String... args) throws Exception {
-        Closer closer = Closer.create();
+        Closer closer = Utils.createCloserWithShutdownHook();
         String h = "garbage mongodb://host:port/database | jdbc:...";
         try {
             NodeStore store = Utils.bootstrapNodeStore(args, closer, h);

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java?rev=1864518&r1=1864517&r2=1864518&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java
 Tue Aug  6 13:04:53 2019
@@ -44,7 +44,7 @@ class RecoveryCommand implements Command
     @Override
     public void execute(String... args) throws Exception {
         MapFactory.setInstance(new MapDBMapFactory());
-        Closer closer = Closer.create();
+        Closer closer = Utils.createCloserWithShutdownHook();
         String h = "recovery mongodb://host:port/database|jdbc:... { dryRun }";
 
         try {

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepairCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepairCommand.java?rev=1864518&r1=1864517&r2=1864518&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepairCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepairCommand.java
 Tue Aug  6 13:04:53 2019
@@ -28,7 +28,7 @@ class RepairCommand implements Command {
 
     @Override
     public void execute(String... args) throws Exception {
-        Closer closer = Closer.create();
+        Closer closer = Utils.createCloserWithShutdownHook();
         String h = "repair mongodb://host:port/database path";
         try {
             NodeStore store = Utils.bootstrapNodeStore(args, closer, h);

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java?rev=1864518&r1=1864517&r2=1864518&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java
 Tue Aug  6 13:04:53 2019
@@ -76,7 +76,7 @@ class ResetClusterIdCommand implements C
         String help = "resetclusterid {<path>|<mongo-uri>|<jdbc-uri>}";
         Utils.NodeStoreOptions opts = new 
Utils.NodeStoreOptions(help).parse(args);
 
-        Closer closer = Closer.create();
+        Closer closer = Utils.createCloserWithShutdownHook();
         try {
             NodeStore store = Utils.bootstrapNodeStore(opts, closer);
             deleteClusterId(store);

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java?rev=1864518&r1=1864517&r2=1864518&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Utils.java
 Tue Aug  6 13:04:53 2019
@@ -341,6 +341,19 @@ class Utils {
         };
     }
 
+    static Closer createCloserWithShutdownHook() {
+        Closer closer = Closer.create();
+        Runtime.getRuntime().addShutdownHook(new Thread() {
+            public void run() {
+                try {
+                    closer.close();
+                } catch (IOException e) {
+                    e.printStackTrace(System.err);
+                }
+            }
+        });
+        return closer;
+    }
 
     private static Properties loadAndTransformProps(String cfgPath) throws 
IOException {
         Dictionary dict = ConfigurationHandler.read(new 
FileInputStream(cfgPath));


Reply via email to