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;