You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2014/03/24 03:47:53 UTC
svn commit: r1580707 - in /lucene/dev/trunk:
lucene/test-framework/src/java/org/apache/lucene/store/
solr/test-framework/src/java/org/apache/solr/cloud/
solr/test-framework/src/java/org/apache/solr/core/
Author: markrmiller
Date: Mon Mar 24 02:47:53 2014
New Revision: 1580707
URL: http://svn.apache.org/r1580707
Log:
LUCENE-5543: Add allowReadingFilesStillOpenForWrite to MockDirectoryFactory and MockDirectoryWrapper and set it to true for cloud tests.
Modified:
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java
lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java
lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java?rev=1580707&r1=1580706&r2=1580707&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java Mon Mar 24 02:47:53 2014
@@ -75,6 +75,7 @@ public class MockDirectoryWrapper extend
boolean trackDiskUsage = false;
boolean wrapLockFactory = true;
boolean allowRandomFileNotFoundException = true;
+ boolean allowReadingFilesStillOpenForWrite = false;
private Set<String> unSyncedFiles;
private Set<String> createdFiles;
private Set<String> openFilesForWrite = new HashSet<>();
@@ -146,6 +147,12 @@ public class MockDirectoryWrapper extend
public void setAllowRandomFileNotFoundException(boolean value) {
allowRandomFileNotFoundException = value;
}
+
+ /** If set to true, you can open an inputstream on a file
+ * that is still open for writes. */
+ public void setAllowReadingFilesStillOpenForWrite(boolean value) {
+ allowReadingFilesStillOpenForWrite = value;
+ }
/**
* Enum for controlling hard disk throttling.
@@ -564,7 +571,7 @@ public class MockDirectoryWrapper extend
// cannot open a file for input if it's still open for
// output, except for segments.gen and segments_N
- if (openFilesForWrite.contains(name) && !name.startsWith("segments")) {
+ if (!allowReadingFilesStillOpenForWrite && openFilesForWrite.contains(name) && !name.startsWith("segments")) {
throw (IOException) fillOpenTrace(new IOException("MockDirectoryWrapper: file \"" + name + "\" is still open for writing"), name, false);
}
@@ -1004,4 +1011,5 @@ public class MockDirectoryWrapper extend
* e.g. from {@link MockDirectoryWrapper.Failure}. */
public static class FakeIOException extends IOException {
}
+
}
Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java?rev=1580707&r1=1580706&r2=1580707&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java Mon Mar 24 02:47:53 2014
@@ -30,6 +30,7 @@ import org.apache.solr.common.cloud.Slic
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.core.Diagnostics;
+import org.apache.solr.core.MockDirectoryFactory;
import org.apache.solr.servlet.SolrDispatchFilter;
import org.apache.zookeeper.KeeperException;
import org.junit.After;
@@ -69,6 +70,7 @@ public abstract class AbstractDistribZkT
System.setProperty(ENABLE_UPDATE_LOG, "true");
System.setProperty(REMOVE_VERSION_FIELD, "true");
System.setProperty(ZOOKEEPER_FORCE_SYNC, "false");
+ System.setProperty(MockDirectoryFactory.SOLR_TESTS_ALLOW_READING_FILES_STILL_OPEN_FOR_WRITE, "true");
String schema = getSchemaFile();
if (schema == null) schema = "schema.xml";
@@ -224,6 +226,7 @@ public abstract class AbstractDistribZkT
System.clearProperty("solr.test.sys.prop1");
System.clearProperty("solr.test.sys.prop2");
System.clearProperty(ZOOKEEPER_FORCE_SYNC);
+ System.clearProperty(MockDirectoryFactory.SOLR_TESTS_ALLOW_READING_FILES_STILL_OPEN_FOR_WRITE);
resetExceptionIgnores();
super.tearDown();
Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java?rev=1580707&r1=1580706&r2=1580707&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java Mon Mar 24 02:47:53 2014
@@ -31,6 +31,9 @@ import org.apache.lucene.util.LuceneTest
* Opens a directory with {@link LuceneTestCase#newDirectory()}
*/
public class MockDirectoryFactory extends EphemeralDirectoryFactory {
+
+ public static final String SOLR_TESTS_ALLOW_READING_FILES_STILL_OPEN_FOR_WRITE = "solr.tests.allow_reading_files_still_open_for_write";
+ private boolean allowReadingFilesStillOpenForWrite = Boolean.getBoolean(SOLR_TESTS_ALLOW_READING_FILES_STILL_OPEN_FOR_WRITE);
@Override
protected Directory create(String path, DirContext dirContext) throws IOException {
@@ -59,6 +62,10 @@ public class MockDirectoryFactory extend
// tries to write to index.properties after the file has
// already been created.
mockDirWrapper.setPreventDoubleWrite(false);
+
+ if (allowReadingFilesStillOpenForWrite) {
+ mockDirWrapper.setAllowReadingFilesStillOpenForWrite(true);
+ }
}
return dir;