You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by am...@apache.org on 2016/09/09 03:25:15 UTC
svn commit: r1759933 - in /jackrabbit/trunk/jackrabbit-data/src:
main/java/org/apache/jackrabbit/core/data/FSBackend.java
test/java/org/apache/jackrabbit/core/data/TestCachingFDS.java
test/java/org/apache/jackrabbit/core/data/TestCachingFDSCacheOff.java
Author: amitj
Date: Fri Sep 9 03:25:14 2016
New Revision: 1759933
URL: http://svn.apache.org/viewvc?rev=1759933&view=rev
Log:
JCR-4008: Restore TestCachingFDS.testDeleteRecord() to fix it with disabling AsyncUpload in unit tests
Patch from Woonsan Ko
Modified:
jackrabbit/trunk/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FSBackend.java
jackrabbit/trunk/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDS.java
jackrabbit/trunk/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDSCacheOff.java
Modified: jackrabbit/trunk/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FSBackend.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FSBackend.java?rev=1759933&r1=1759932&r2=1759933&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FSBackend.java (original)
+++ jackrabbit/trunk/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FSBackend.java Fri Sep 9 03:25:14 2016
@@ -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/trunk/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDS.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDS.java?rev=1759933&r1=1759932&r2=1759933&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDS.java (original)
+++ jackrabbit/trunk/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDS.java Fri Sep 9 03:25:14 2016
@@ -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/trunk/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDSCacheOff.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDSCacheOff.java?rev=1759933&r1=1759932&r2=1759933&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDSCacheOff.java (original)
+++ jackrabbit/trunk/jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCachingFDSCacheOff.java Fri Sep 9 03:25:14 2016
@@ -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;