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();