Author: chetanm
Date: Sat May 23 07:37:39 2015
New Revision: 1681282

URL: http://svn.apache.org/r1681282
Log:
OAK-2657 - Repository Upgrade could shut down the source repository early

Applying patch from Alex

Modified:
    
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java

Modified: 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java?rev=1681282&r1=1681281&r2=1681282&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
 Sat May 23 07:37:39 2015
@@ -139,6 +139,8 @@ public class RepositoryUpgrade {
 
     private boolean skipOnError = false;
 
+    private boolean earlyShutdown = false;
+
     private List<CommitHook> customCommitHooks = null;
 
     /**
@@ -201,6 +203,14 @@ public class RepositoryUpgrade {
         this.skipOnError = skipOnError;
     }
 
+    public boolean isEarlyShutdown() {
+        return earlyShutdown;
+    }
+
+    public void setEarlyShutdown(boolean earlyShutdown) {
+        this.earlyShutdown = earlyShutdown;
+    }
+
     /**
      * Returns the list of custom CommitHooks to be applied before the final
      * type validation, reference and indexing hooks.
@@ -339,7 +349,7 @@ public class RepositoryUpgrade {
                 createIndexEditorProvider()
             )));
 
-            target.merge(builder, new LoggingCompositeHook(hooks), 
CommitInfo.EMPTY);
+            target.merge(builder, new LoggingCompositeHook(hooks, source, 
earlyShutdown), CommitInfo.EMPTY);
             logger.debug("Repository upgrade completed.");
         } catch (Exception e) {
             throw new RepositoryException("Failed to copy content", e);
@@ -753,9 +763,15 @@ public class RepositoryUpgrade {
 
     private static class LoggingCompositeHook implements CommitHook {
         private final Collection<CommitHook> hooks;
+        private boolean started = false;
+        private final boolean earlyShutdown;
+        private final RepositoryContext source;
 
-        public LoggingCompositeHook(Collection<CommitHook> hooks) {
+        public LoggingCompositeHook(Collection<CommitHook> hooks,
+                  RepositoryContext source, boolean earlyShutdown) {
             this.hooks = hooks;
+            this.earlyShutdown = earlyShutdown;
+            this.source = source;
         }
 
         @Nonnull
@@ -763,6 +779,11 @@ public class RepositoryUpgrade {
         public NodeState processCommit(NodeState before, NodeState after, 
CommitInfo info) throws CommitFailedException {
             NodeState newState = after;
             Stopwatch watch = Stopwatch.createStarted();
+            if (earlyShutdown && !started) {
+                logger.info("Shutting down source repository.");
+                source.getRepository().shutdown();
+                started = true;
+            }
             for (CommitHook hook : hooks) {
                 logger.info("Processing commit via {}", hook);
                 newState = hook.processCommit(before, newState, info);


Reply via email to