Author: frm
Date: Tue Nov 21 15:35:54 2017
New Revision: 1815939

URL: http://svn.apache.org/viewvc?rev=1815939&view=rev
Log:
OAK-6784 - Propagate exceptions thrown by Compact

The Compact tool backend should not swallow the exceptions thrown during its
execution. This way the tool frontend can handle error conditions meaningfully,
e.g. by printing a user-friendly error message or by retrying the operation
with different parameters.

Modified:
    jackrabbit/oak/branches/1.6/   (props changed)
    
jackrabbit/oak/branches/1.6/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CompactCommand.java
    
jackrabbit/oak/branches/1.6/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java
    
jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java

Propchange: jackrabbit/oak/branches/1.6/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov 21 15:35:54 2017
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1781068,1781075,1781248,1781386,1781846,1781907,1782000,1782029,1782196,1782447,1782476,1782770,1782945,1782966,1782973,1782990,1783061,1783066,1783089,1783104-1783105,1783110,1783619,1783720,1783731,1783733,1783738,1783742,1783773,1783855,1783891,1784023,1784034,1784130,1784162,1784251,1784401,1784551,1784574,1784689,1785095,1785108,1785283,1785838,1785917,1785919,1785946,1786122,1787074,1787145,1787151,1787217,1787425,1788056,1788378,1788387-1788389,1788463,1788476,1788850,1789056,1789534,1790382,1792049,1792463,1792483,1792742,1792746,1793013,1793088,1793618,1793627,1793644,1794393,1794417,1794683,1795138,1795314,1795330,1795475,1795488,1795491,1795502,1795594,1795613,1795618,1796144,1796230,1796239,1796274,1796278,1796988,1797378,1798035,1798834,1799219,1799389,1799393,1799924,1800244,1800269,1800606,1800613,1800974,1801011,1801013,1801118-1801119,1801675,1802260,1802262,1802286,1802548,1802934,1802938,1802973,1803026,1803247-1803249,1803951,1803953-1803955
 
,1805851-1805852,1806668,1807308,1807688,1808125,1808128,1808142,1808240,1808246,1809024,1809026,1809131,1809163,1809253,1809255-1809256,1809289,1809745,1811071-1811072,1811155,1811380,1811655,1811952,1811963,1811986,1813192,1814189,1814332,1814397,1815201,1815426
+/jackrabbit/oak/trunk:1781068,1781075,1781248,1781386,1781846,1781907,1782000,1782029,1782196,1782447,1782476,1782770,1782945,1782966,1782973,1782990,1783061,1783066,1783089,1783104-1783105,1783110,1783619,1783720,1783731,1783733,1783738,1783742,1783773,1783855,1783891,1784023,1784034,1784130,1784162,1784251,1784401,1784551,1784574,1784689,1785095,1785108,1785283,1785838,1785917,1785919,1785946,1786122,1787074,1787145,1787151,1787217,1787425,1788056,1788378,1788387-1788389,1788463,1788476,1788850,1789056,1789534,1790382,1792049,1792463,1792483,1792742,1792746,1793013,1793088,1793618,1793627,1793644,1794393,1794417,1794683,1795138,1795314,1795330,1795475,1795488,1795491,1795502,1795594,1795613,1795618,1796144,1796230,1796239,1796274,1796278,1796988,1797378,1798035,1798834,1799219,1799389,1799393,1799924,1800244,1800269,1800606,1800613,1800974,1801011,1801013,1801118-1801119,1801675,1802260,1802262,1802286,1802548,1802934,1802938,1802973,1803026,1803247-1803249,1803951,1803953-1803955
 
,1805851-1805852,1806668,1807308,1807688,1808125,1808128,1808142,1808240,1808246,1809024,1809026,1809131,1809163,1809253,1809255-1809256,1809289,1809745,1811071-1811072,1811155,1811380,1811655,1811952,1811963,1811986,1813192,1814189,1814332,1814397,1815201,1815426,1815926
 /jackrabbit/trunk:1345480

Modified: 
jackrabbit/oak/branches/1.6/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CompactCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CompactCommand.java?rev=1815939&r1=1815938&r2=1815939&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.6/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CompactCommand.java
 (original)
+++ 
jackrabbit/oak/branches/1.6/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CompactCommand.java
 Tue Nov 21 15:35:54 2017
@@ -92,9 +92,8 @@ class CompactCommand implements Command
                 SegmentTarUtils.compact(directory, mmap);
             }
             success = true;
-        } catch (Throwable e) {
-            System.out.println("Compaction failure stack trace:");
-            e.printStackTrace(System.out);
+        } catch (Exception e) {
+            e.printStackTrace(System.err);
         } finally {
             watch.stop();
             if (success) {

Modified: 
jackrabbit/oak/branches/1.6/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java?rev=1815939&r1=1815938&r2=1815939&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.6/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java
 (original)
+++ 
jackrabbit/oak/branches/1.6/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java
 Tue Nov 21 15:35:54 2017
@@ -198,7 +198,7 @@ final class SegmentTarUtils {
                 .run();
     }
 
-    static void compact(@Nonnull File directory, @Nullable Boolean mmap) {
+    static void compact(@Nonnull File directory, @Nullable Boolean mmap) 
throws IOException, InvalidFileStoreVersionException {
         Compact.builder()
                 .withPath(directory)
                 .withMmap(mmap)

Modified: 
jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java?rev=1815939&r1=1815938&r2=1815939&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
 (original)
+++ 
jackrabbit/oak/branches/1.6/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
 Tue Nov 21 15:35:54 2017
@@ -39,7 +39,8 @@ import org.apache.jackrabbit.oak.segment
 /**
  * Perform an offline compaction of an existing segment store.
  */
-public class Compact implements Runnable {
+public class Compact {
+
 
     /**
      * Create a builder for the {@link Compact} command.
@@ -107,7 +108,7 @@ public class Compact implements Runnable
          *
          * @return an instance of {@link Runnable}.
          */
-        public Runnable build() {
+        public Compact build() {
             checkNotNull(path);
             return new Compact(this);
         }
@@ -127,16 +128,7 @@ public class Compact implements Runnable
         this.segmentCacheSize = builder.segmentCacheSize;
     }
 
-    @Override
-    public void run() {
-        try {
-            compact();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void compact() throws IOException, 
InvalidFileStoreVersionException {
+    public void run() throws IOException, InvalidFileStoreVersionException {
         try (FileStore store = newFileStore()) {
             store.compact();
         }


Reply via email to