You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2018/11/05 13:19:29 UTC

svn commit: r1845786 - in /jackrabbit/branches/2.10: ./ jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/ jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/

Author: reschke
Date: Mon Nov  5 13:19:29 2018
New Revision: 1845786

URL: http://svn.apache.org/viewvc?rev=1845786&view=rev
Log:
JCR-4008: Restore TestCachingFDS.testDeleteRecord() to fix it with disabling AsyncUpload in unit tests (ported to 2.10)


Patch from Woonsan Ko

Modified:
    jackrabbit/branches/2.10/   (props changed)
    jackrabbit/branches/2.10/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FSBackend.java
    jackrabbit/branches/2.10/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDS.java
    jackrabbit/branches/2.10/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDSCacheOff.java

Propchange: jackrabbit/branches/2.10/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov  5 13:19:29 2018
@@ -1,4 +1,4 @@
 /jackrabbit/branches/2.12:1776442,1776451,1776500,1776524,1835381
 /jackrabbit/branches/JCR-2272:1173165-1176545
 /jackrabbit/sandbox/JCR-2415-lucene-3.0:1060860-1064038
-/jackrabbit/trunk:1709811,1717599,1720093,1729382,1730696,1732436,1740814-1740815,1751279,1752165,1753226,1757322,1758600,1759607,1759782,1759865,1761679,1761909,1762422,1763558,1766398,1771078,1771741,1771939,1771999,1772049,1772343,1772444,1772457,1772530,1772544,1773579,1773591,1773745,1774443,1775123,1775132,1775315,1775384,1775414,1775419,1775437,1775444,1775463,1775472-1775473,1775481,1775485,1775496,1775509,1775514,1775613,1775617,1775621,1775624,1775629,1775631-1775632,1775634-1775635,1775637,1775657,1776410,1776414,1776416-1776417,1776421,1779166,1779460,1780208,1786325,1787043,1787381,1792100,1792105,1792113,1792193,1793315,1793323,1793327,1793332,1796980,1797209,1797917,1798586,1799429,1802977,1807234,1807244,1808752,1808754,1809149,1809329,1810108,1811667,1812994,1814831,1817097-1817098,1817100,1817201,1818586,1819269,1820133,1821597,1822947,1822950,1826230,1826647,1826940,1826964,1833374
+/jackrabbit/trunk:1709811,1717599,1720093,1729382,1730696,1732436,1740814-1740815,1751279,1752165,1753226,1757322,1758600,1759607,1759782,1759865,1759933,1761679,1761909,1762422,1763558,1766398,1771078,1771741,1771939,1771999,1772049,1772343,1772444,1772457,1772530,1772544,1773579,1773591,1773745,1774443,1775123,1775132,1775315,1775384,1775414,1775419,1775437,1775444,1775463,1775472-1775473,1775481,1775485,1775496,1775509,1775514,1775613,1775617,1775621,1775624,1775629,1775631-1775632,1775634-1775635,1775637,1775657,1776410,1776414,1776416-1776417,1776421,1779166,1779460,1780208,1786325,1787043,1787381,1792100,1792105,1792113,1792193,1793315,1793323,1793327,1793332,1796980,1797209,1797917,1798586,1799429,1802977,1807234,1807244,1808752,1808754,1809149,1809329,1810108,1811667,1812994,1814831,1817097-1817098,1817100,1817201,1818586,1819269,1820133,1821597,1822947,1822950,1826230,1826647,1826940,1826964,1833374

Modified: jackrabbit/branches/2.10/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FSBackend.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.10/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FSBackend.java?rev=1845786&r1=1845785&r2=1845786&view=diff
==============================================================================
--- jackrabbit/branches/2.10/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FSBackend.java (original)
+++ jackrabbit/branches/2.10/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FSBackend.java Mon Nov  5 13:19:29 2018
@@ -32,6 +32,8 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadPoolExecutor;
 
@@ -55,7 +57,7 @@ public class FSBackend implements Backen
 
     File fsPathDir;
 
-    private ThreadPoolExecutor asyncWriteExecuter;
+    private Executor asyncWriteExecuter;
 
     public static final String FS_BACKEND_PATH = "fsBackendPath";
 
@@ -117,8 +119,7 @@ public class FSBackend implements Backen
                     + fsPathDir.getAbsolutePath());
             }
         }
-        asyncWriteExecuter = (ThreadPoolExecutor) Executors.newFixedThreadPool(
-            10, new NamedThreadFactory("fs-write-worker"));
+        asyncWriteExecuter = createAsyncWriteExecutor();
 
     }
 
@@ -292,8 +293,11 @@ public class FSBackend implements Backen
 
     @Override
     public void close() throws DataStoreException {
-        asyncWriteExecuter.shutdownNow();
+        Executor asyncExecutor = getAsyncWriteExecutor();
 
+        if (asyncExecutor != null && asyncExecutor instanceof ExecutorService) {
+            ((ExecutorService) asyncExecutor).shutdownNow();
+        }
     }
 
     @Override
@@ -333,6 +337,32 @@ public class FSBackend implements Backen
     }
 
     /**
+     * Creates a {@link Executor}.
+     * This method is invoked during the initialization for asynchronous write/touch job executions.
+     * @return a {@link Executor}
+     */
+    protected Executor createAsyncWriteExecutor() {
+        Executor asyncExecutor;
+
+        if (store.getAsyncUploadLimit() > 0) {
+            asyncExecutor = Executors.newFixedThreadPool(10,
+                    new NamedThreadFactory("fs-write-worker"));
+        } else {
+            asyncExecutor = new ImmediateExecutor();
+        }
+
+        return asyncExecutor;
+    }
+
+    /**
+     * Returns ThreadPoolExecutor used to execute asynchronous write or touch jobs.
+     * @return ThreadPoolExecutor used to execute asynchronous write or touch jobs
+     */
+    protected Executor getAsyncWriteExecutor() {
+        return asyncWriteExecuter;
+    }
+
+    /**
      * Returns the identified file. This method implements the pattern used to
      * avoid problems with too many files in a single directory.
      * <p>
@@ -493,4 +523,15 @@ public class FSBackend implements Backen
         }
     }
 
+    /**
+     * This class implements {@link Executor} interface to run {@code command} right away,
+     * resulting in non-asynchronous mode executions.
+     */
+    private class ImmediateExecutor implements Executor {
+        @Override
+        public void execute(Runnable command) {
+            command.run();
+        }
+    }
+
 }

Modified: jackrabbit/branches/2.10/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDS.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.10/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDS.java?rev=1845786&r1=1845785&r2=1845786&view=diff
==============================================================================
--- jackrabbit/branches/2.10/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDS.java (original)
+++ jackrabbit/branches/2.10/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDS.java Mon Nov  5 13:19:29 2018
@@ -50,16 +50,12 @@ public class TestCachingFDS extends Test
         LOG.info("fsBackendPath [{}] set.", fsPath);
         cacheFDS.setProperties(props);
         cacheFDS.setSecret("12345");
+        // disable asynchronous writing in testing.
+        cacheFDS.setAsyncUploadLimit(0);
         cacheFDS.init(dataStoreDir);
         return cacheFDS;
     }
 
-    @Override
-    protected void doDeleteRecordTest() throws Exception {
-        ds = createDataStore();
-        LOG.info("Skip deleteRecordTest on CachingFDS (JCR-4006)");
-    }
-
     /**
      * Test robustness of {@link AsyncUploadCache} corruption.
      */

Modified: jackrabbit/branches/2.10/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDSCacheOff.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.10/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDSCacheOff.java?rev=1845786&r1=1845785&r2=1845786&view=diff
==============================================================================
--- jackrabbit/branches/2.10/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDSCacheOff.java (original)
+++ jackrabbit/branches/2.10/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDSCacheOff.java Mon Nov  5 13:19:29 2018
@@ -42,6 +42,8 @@ public class TestCachingFDSCacheOff exte
         props.setProperty(FSBackend.FS_BACKEND_PATH, fsPath);
         cacheFDS.setProperties(props);
         cacheFDS.setSecret("12345");
+        // disable asynchronous writing in testing.
+        cacheFDS.setAsyncUploadLimit(0);
         cacheFDS.setCacheSize(0);
         cacheFDS.init(dataStoreDir);
         return cacheFDS;