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; } }