Index: oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java =================================================================== --- oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java (revision 1667877) +++ oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java (working copy) @@ -88,10 +88,20 @@ private static long count = 0; + private static long timeMs = 0; + private static void logNewNode(JackrabbitNodeState state) { count++; if (count % 10000 == 0) { - log.info("Migrating node #" + count + ": " + state.getPath()); + long delta = 0; + if (timeMs == 0) { + timeMs = System.currentTimeMillis(); + } else { + delta = System.currentTimeMillis() - timeMs; + timeMs = System.currentTimeMillis(); + } + log.info("Migrating node #{}: {} in {} ms.", count, + state.getPath(), delta); } } Index: oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java =================================================================== --- oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java (revision 1667877) +++ oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java (working copy) @@ -308,7 +308,7 @@ createIndexEditorProvider() ))); - target.merge(builder, new LoggingCompositeHook(hooks), CommitInfo.EMPTY); + target.merge(builder, new LoggingCompositeHook(hooks, source), CommitInfo.EMPTY); } catch (Exception e) { throw new RepositoryException("Failed to copy content", e); } @@ -867,10 +867,15 @@ } private static class LoggingCompositeHook implements CommitHook { + private final Collection hooks; + + private boolean started = false; + private final RepositoryContext source; - public LoggingCompositeHook(Collection hooks) { + public LoggingCompositeHook(Collection hooks, RepositoryContext source) { this.hooks = hooks; + this.source = source; } @Nonnull @@ -878,6 +883,11 @@ public NodeState processCommit(NodeState before, NodeState after, CommitInfo info) throws CommitFailedException { NodeState newState = after; Stopwatch watch = Stopwatch.createStarted(); + if (!started) { + logger.info("#shutdown"); + source.getRepository().shutdown(); + started = true; + } for (CommitHook hook : hooks) { logger.info("Processing commit via {}", hook); newState = hook.processCommit(before, newState, info);