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 2013/03/18 15:52:49 UTC
svn commit: r1457784 - in /lucene/dev/trunk:
lucene/core/src/java/org/apache/lucene/store/ solr/
solr/core/src/java/org/apache/solr/update/
solr/core/src/test/org/apache/solr/
solr/test-framework/src/java/org/apache/solr/core/
solr/test-framework/src/j...
Author: markrmiller
Date: Mon Mar 18 14:52:49 2013
New Revision: 1457784
URL: http://svn.apache.org/r1457784
Log:
SOLR-4605: Rollback does not work correctly.
Modified:
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/TrackingDirectoryWrapper.java
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java
lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockFSDirectoryFactory.java
lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/TrackingDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/TrackingDirectoryWrapper.java?rev=1457784&r1=1457783&r2=1457784&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/TrackingDirectoryWrapper.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/TrackingDirectoryWrapper.java Mon Mar 18 14:52:49 2013
@@ -123,4 +123,8 @@ public final class TrackingDirectoryWrap
public Set<String> getCreatedFiles() {
return createdFileNames;
}
+
+ public Directory getDelegate() {
+ return other;
+ }
}
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1457784&r1=1457783&r2=1457784&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Mon Mar 18 14:52:49 2013
@@ -159,6 +159,8 @@ Bug Fixes
* SOLR-4604: UpdateLog#init is over called on SolrCore#reload. (Mark Miller)
+* SOLR-4605: Rollback does not work correctly. (Mark S, Mark Miller)
+
Optimizations
----------------------
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java?rev=1457784&r1=1457783&r2=1457784&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java Mon Mar 18 14:52:49 2013
@@ -186,7 +186,7 @@ public final class DefaultSolrCoreState
@Override
public synchronized void rollbackIndexWriter(SolrCore core) throws IOException {
- newIndexWriter(core, true, true);
+ newIndexWriter(core, true, false);
}
protected SolrIndexWriter createMainIndexWriter(SolrCore core, String name, boolean forceNewDirectory) throws IOException {
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java?rev=1457784&r1=1457783&r2=1457784&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java Mon Mar 18 14:52:49 2013
@@ -250,6 +250,9 @@ public class BasicFunctionalityTest exte
assertQ(req("id:[100 TO 110]")
,"//*[@numFound='0']"
);
+
+ assertU(h.simpleTag("rollback"));
+ assertU(commit());
}
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=1457784&r1=1457783&r2=1457784&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 18 14:52:49 2013
@@ -22,6 +22,9 @@ import java.io.IOException;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.MockDirectoryWrapper;
+import org.apache.lucene.store.NRTCachingDirectory;
+import org.apache.lucene.store.RateLimitedDirectoryWrapper;
+import org.apache.lucene.store.TrackingDirectoryWrapper;
import org.apache.lucene.util.LuceneTestCase;
/**
@@ -32,8 +35,13 @@ public class MockDirectoryFactory extend
@Override
protected Directory create(String path, DirContext dirContext) throws IOException {
Directory dir = LuceneTestCase.newDirectory();
- if (dir instanceof MockDirectoryWrapper) {
- MockDirectoryWrapper mockDirWrapper = (MockDirectoryWrapper) dir;
+
+ Directory cdir = reduce(dir);
+ cdir = reduce(cdir);
+ cdir = reduce(cdir);
+
+ if (cdir instanceof MockDirectoryWrapper) {
+ MockDirectoryWrapper mockDirWrapper = (MockDirectoryWrapper) cdir;
// we can't currently do this check because of how
// Solr has to reboot a new Directory sometimes when replicating
@@ -55,6 +63,20 @@ public class MockDirectoryFactory extend
return dir;
}
+
+ private Directory reduce(Directory dir) {
+ Directory cdir = dir;
+ if (dir instanceof NRTCachingDirectory) {
+ cdir = ((NRTCachingDirectory)dir).getDelegate();
+ }
+ if (cdir instanceof RateLimitedDirectoryWrapper) {
+ cdir = ((RateLimitedDirectoryWrapper)dir).getDelegate();
+ }
+ if (cdir instanceof TrackingDirectoryWrapper) {
+ cdir = ((TrackingDirectoryWrapper)dir).getDelegate();
+ }
+ return cdir;
+ }
@Override
public boolean isAbsolute(String path) {
Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockFSDirectoryFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockFSDirectoryFactory.java?rev=1457784&r1=1457783&r2=1457784&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockFSDirectoryFactory.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockFSDirectoryFactory.java Mon Mar 18 14:52:49 2013
@@ -22,6 +22,9 @@ import java.io.IOException;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.MockDirectoryWrapper;
+import org.apache.lucene.store.NRTCachingDirectory;
+import org.apache.lucene.store.RateLimitedDirectoryWrapper;
+import org.apache.lucene.store.TrackingDirectoryWrapper;
import org.apache.lucene.util.LuceneTestCase;
/**
@@ -38,8 +41,14 @@ public class MockFSDirectoryFactory exte
// test assumes it can open an IndexWriter when that happens - we
// have a new Directory for the same dir and still an open IW at
// this point
- if (dir instanceof MockDirectoryWrapper) {
- ((MockDirectoryWrapper)dir).setAssertNoUnrefencedFilesOnClose(false);
+
+ Directory cdir = reduce(dir);
+ cdir = reduce(cdir);
+ cdir = reduce(cdir);
+
+ if (cdir instanceof MockDirectoryWrapper) {
+ ((MockDirectoryWrapper)cdir).setAssertNoUnrefencedFilesOnClose(false);
+ ((MockDirectoryWrapper)cdir).setPreventDoubleWrite(false);
}
return dir;
}
@@ -50,4 +59,18 @@ public class MockFSDirectoryFactory exte
// we treat it as file based since this works on most ephem impls
return new File(path).isAbsolute();
}
+
+ private Directory reduce(Directory dir) {
+ Directory cdir = dir;
+ if (dir instanceof NRTCachingDirectory) {
+ cdir = ((NRTCachingDirectory)dir).getDelegate();
+ }
+ if (cdir instanceof RateLimitedDirectoryWrapper) {
+ cdir = ((RateLimitedDirectoryWrapper)dir).getDelegate();
+ }
+ if (cdir instanceof TrackingDirectoryWrapper) {
+ cdir = ((TrackingDirectoryWrapper)dir).getDelegate();
+ }
+ return cdir;
+ }
}
Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java?rev=1457784&r1=1457783&r2=1457784&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java Mon Mar 18 14:52:49 2013
@@ -178,7 +178,7 @@ abstract public class BaseTestHarness {
return simpleTag("optimize", args);
}
- private static String simpleTag(String tag, String... args) {
+ public static String simpleTag(String tag, String... args) {
try {
StringWriter r = new StringWriter();