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