Author: frm
Date: Fri Feb  2 10:41:27 2018
New Revision: 1822940

URL: http://svn.apache.org/viewvc?rev=1822940&view=rev
Log:
OAK-7236 - Let the diff command properly propagate errors

The diff command should always return with a non-zero return code in case of
error. Moreover, error messages and stack traces should always be printed on
the standard error.

Modified:
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FileStoreDiffCommand.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Diff.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Revisions.java

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FileStoreDiffCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FileStoreDiffCommand.java?rev=1822940&r1=1822939&r2=1822940&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FileStoreDiffCommand.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FileStoreDiffCommand.java
 Fri Feb  2 10:41:27 2018
@@ -63,23 +63,25 @@ class FileStoreDiffCommand implements Co
         String path = pathO.value(options);
         boolean ignoreSNFEs = options.has(ignoreSNFEsO);
 
+        int statusCode;
         if (listOnly) {
-            Revisions.builder()
-                    .withPath(store)
-                    .withOutput(out)
-                    .build()
-                    .run();
+            statusCode = Revisions.builder()
+                .withPath(store)
+                .withOutput(out)
+                .build()
+                .run();
         } else {
-            Diff.builder()
-                    .withPath(store)
-                    .withOutput(out)
-                    .withInterval(interval)
-                    .withIncremental(incremental)
-                    .withFilter(path)
-                    .withIgnoreMissingSegments(ignoreSNFEs)
-                    .build()
-                    .run();
+            statusCode = Diff.builder()
+                .withPath(store)
+                .withOutput(out)
+                .withInterval(interval)
+                .withIncremental(incremental)
+                .withFilter(path)
+                .withIgnoreMissingSegments(ignoreSNFEs)
+                .build()
+                .run();
         }
+        System.exit(statusCode);
     }
 
     private File defaultOutFile() {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Diff.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Diff.java?rev=1822940&r1=1822939&r2=1822940&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Diff.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Diff.java
 Fri Feb  2 10:41:27 2018
@@ -39,7 +39,7 @@ import org.apache.jackrabbit.oak.spi.sta
 /**
  * Shows the differences between two head states.
  */
-public class Diff implements Runnable {
+public class Diff {
 
     /**
      * Create a builder for the {@link Diff} command.
@@ -160,7 +160,7 @@ public class Diff implements Runnable {
          *
          * @return an instance of {@link Runnable}.
          */
-        public Runnable build() {
+        public Diff build() {
             checkNotNull(path);
             checkNotNull(interval);
             checkNotNull(out);
@@ -191,12 +191,13 @@ public class Diff implements Runnable {
         this.ignoreMissingSegments = builder.ignoreMissingSegments;
     }
 
-    @Override
-    public void run() {
+    public int run() {
         try {
             diff();
+            return 0;
         } catch (Exception e) {
-            e.printStackTrace();
+            e.printStackTrace(System.err);
+            return 1;
         }
     }
 

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Revisions.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Revisions.java?rev=1822940&r1=1822939&r2=1822940&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Revisions.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Revisions.java
 Fri Feb  2 10:41:27 2018
@@ -28,7 +28,7 @@ import java.util.List;
 /**
  * Collect and print the revisions of a segment store.
  */
-public class Revisions implements Runnable {
+public class Revisions {
 
     /**
      * Create a builder for the {@link Revisions} command.
@@ -80,7 +80,7 @@ public class Revisions implements Runnab
          *
          * @return an instance of {@link Runnable}.
          */
-        public Runnable build() {
+        public Revisions build() {
             checkNotNull(path);
             checkNotNull(out);
             return new Revisions(this);
@@ -97,12 +97,13 @@ public class Revisions implements Runnab
         this.out = builder.out;
     }
 
-    @Override
-    public void run() {
+    public int run() {
         try {
             listRevisions();
+            return 0;
         } catch (Exception e) {
-            e.printStackTrace();
+            e.printStackTrace(System.err);
+            return 1;
         }
     }
 


Reply via email to