You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ch...@apache.org on 2017/07/18 06:16:26 UTC

svn commit: r1802242 - in /jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index: IndexCommand.java LoggingInitializer.java

Author: chetanm
Date: Tue Jul 18 06:16:26 2017
New Revision: 1802242

URL: http://svn.apache.org/viewvc?rev=1802242&view=rev
Log:
OAK-6409 - Oak-run indexing: improved (user friendly) output

Ensure that Logback is stopped otherwise some threads keep command running
even after completion

Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexCommand.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/LoggingInitializer.java

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexCommand.java?rev=1802242&r1=1802241&r2=1802242&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexCommand.java Tue Jul 18 06:16:26 2017
@@ -76,15 +76,28 @@ public class IndexCommand implements Com
         setupDirectories(indexOpts);
         setupLogging(indexOpts);
 
-        if (indexOpts.isReindex() && opts.getCommonOpts().isReadWrite()) {
-            performReindexInReadWriteMode(indexOpts);
-        } else {
-            try (Closer closer = Closer.create()) {
-                NodeStoreFixture fixture = NodeStoreFixtureProvider.create(opts);
-                closer.register(fixture);
-                execute(fixture, indexOpts, closer);
-                tellReportPaths();
+        boolean success = false;
+        try {
+            if (indexOpts.isReindex() && opts.getCommonOpts().isReadWrite()) {
+                performReindexInReadWriteMode(indexOpts);
+            } else {
+                try (Closer closer = Closer.create()) {
+                    NodeStoreFixture fixture = NodeStoreFixtureProvider.create(opts);
+                    closer.register(fixture);
+                    execute(fixture, indexOpts, closer);
+                    tellReportPaths();
+                }
             }
+            success = true;
+        } catch (Throwable e) {
+            log.error("Error occurred while performing index tasks", e);
+            e.printStackTrace(System.err);
+        } finally {
+            shutdownLogging();
+        }
+
+        if (!success) {
+            System.exit(1);
         }
     }
 
@@ -272,6 +285,10 @@ public class IndexCommand implements Com
         new LoggingInitializer(indexOpts.getWorkDir()).init();
     }
 
+    private void shutdownLogging() {
+        LoggingInitializer.shutdownLogging();
+    }
+
     private static String now() {
         return ISO8601.format(Calendar.getInstance());
     }

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/LoggingInitializer.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/LoggingInitializer.java?rev=1802242&r1=1802241&r2=1802242&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/LoggingInitializer.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/LoggingInitializer.java Tue Jul 18 06:16:26 2017
@@ -64,6 +64,11 @@ public class LoggingInitializer {
         log.info("Logs would be written to {}", new File(workDir, "indexing.log"));
     }
 
+    public static void shutdownLogging(){
+        LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
+        context.stop();
+    }
+
     private void configureLogback(File config) {
         LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();