You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jd...@apache.org on 2012/04/24 18:37:48 UTC

svn commit: r1329839 - /lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java

Author: jdyer
Date: Tue Apr 24 16:37:48 2012
New Revision: 1329839

URL: http://svn.apache.org/viewvc?rev=1329839&view=rev
Log:
SOLR-3361: fix "maxNumberOfBackups" to work if backups are triggered on commit

Modified:
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java?rev=1329839&r1=1329838&r2=1329839&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java Tue Apr 24 16:37:48 2012
@@ -791,6 +791,24 @@ public class TestReplicationHandler exte
       index(masterClient, "id", i, "name", "name = " + i);
 
     masterClient.commit();
+    boolean checkOnCommit = random().nextBoolean();
+    //Check to see if 2 commits results in only one backup. (maxBackupsToKeep=1)
+    if(!addNumberToKeepInRequest && checkOnCommit) {
+      Thread.sleep(1000); //ensure the 2 backups have a separate timestamp.
+      masterClient.commit();
+      File[] files = new File(master.getDataDir()).listFiles(new FilenameFilter() {        
+        public boolean accept(File dir, String name) {
+          if(name.startsWith("snapshot")) {
+            return true;
+          }
+          return false;
+        }
+      });
+      assertEquals(1, files.length);
+      for(File f : files) {
+        AbstractSolrTestCase.recurseDelete(f); // clean up the snap dir
+      }
+    }
    
     class BackupThread extends Thread {
       volatile String fail = null;
@@ -860,76 +878,66 @@ public class TestReplicationHandler exte
       };
     };
     
-    File[] snapDir = new File[2];
-    String firstBackupTimestamp = null;
-    for(int i=0 ; i<2 ; i++) {
-      BackupThread backupThread = null;
-      if(!addNumberToKeepInRequest) {
-        if(random().nextBoolean()) {
-          masterClient.commit();
-        } else {
-          backupThread = new BackupThread(addNumberToKeepInRequest, backupKeepParamName);
-          backupThread.start();
-        }
-      } else {
-        backupThread = new BackupThread(addNumberToKeepInRequest, backupKeepParamName);
+    if(!checkOnCommit) {
+      File[] snapDir = new File[2];
+      String firstBackupTimestamp = null;
+      for(int i=0 ; i<2 ; i++) {
+        BackupThread backupThread = new BackupThread(addNumberToKeepInRequest, backupKeepParamName);
         backupThread.start();
-      }
-      
-      
-      File dataDir = new File(master.getDataDir());
-      
-      int waitCnt = 0;
-      CheckStatus checkStatus = new CheckStatus(firstBackupTimestamp);
-      while(true) {
-        checkStatus.run();
-        if(checkStatus.fail != null) {
-          fail(checkStatus.fail);
-        }
-        if(checkStatus.success) {
-          if(i==0) {
-            firstBackupTimestamp = checkStatus.backupTimestamp;
-            Thread.sleep(1000); //ensure the next backup will have a different timestamp.
+        
+        File dataDir = new File(master.getDataDir());
+        
+        int waitCnt = 0;
+        CheckStatus checkStatus = new CheckStatus(firstBackupTimestamp);
+        while(true) {
+          checkStatus.run();
+          if(checkStatus.fail != null) {
+            fail(checkStatus.fail);
+          }
+          if(checkStatus.success) {
+            if(i==0) {
+              firstBackupTimestamp = checkStatus.backupTimestamp;
+              Thread.sleep(1000); //ensure the next backup will have a different timestamp.
+            }
+            break;
           }
-          break;
+          Thread.sleep(200);
+          if(waitCnt == 10) {
+            fail("Backup success not detected:" + checkStatus.response);
+          }
+          waitCnt++;
         }
-        Thread.sleep(200);
-        if(waitCnt == 10) {
-          fail("Backup success not detected:" + checkStatus.response);
+        
+        if(backupThread.fail != null) {
+          fail(backupThread.fail);
         }
-        waitCnt++;
+    
+        File[] files = dataDir.listFiles(new FilenameFilter() {
+          
+            public boolean accept(File dir, String name) {
+              if(name.startsWith("snapshot")) {
+                return true;
+              }
+              return false;
+            }
+          });
+        assertEquals(1, files.length);
+        snapDir[i] = files[0];
+        Directory dir = new SimpleFSDirectory(snapDir[i].getAbsoluteFile());
+        IndexReader reader = IndexReader.open(dir);
+        IndexSearcher searcher = new IndexSearcher(reader);
+        TopDocs hits = searcher.search(new MatchAllDocsQuery(), 1);
+        assertEquals(nDocs, hits.totalHits);
+        reader.close();
+        dir.close();
       }
-      
-      if(backupThread!= null && backupThread.fail != null) {
-        fail(backupThread.fail);
+      if(snapDir[0].exists()) {
+        fail("The first backup should have been cleaned up because " + backupKeepParamName + " was set to 1.");
       }
-  
-      File[] files = dataDir.listFiles(new FilenameFilter() {
-        
-          public boolean accept(File dir, String name) {
-            if(name.startsWith("snapshot")) {
-              return true;
-            }
-            return false;
-          }
-        });
-      assertEquals(1, files.length);
-      snapDir[i] = files[0];
-      Directory dir = new SimpleFSDirectory(snapDir[i].getAbsoluteFile());
-      IndexReader reader = IndexReader.open(dir);
-      IndexSearcher searcher = new IndexSearcher(reader);
-      TopDocs hits = searcher.search(new MatchAllDocsQuery(), 1);
-      assertEquals(nDocs, hits.totalHits);
-      reader.close();
-      dir.close();
-    }
-    if(snapDir[0].exists()) {
-      fail("The first backup should have been cleaned up because " + backupKeepParamName + " was set to 1.");
-    }
-    
-    for(int i=0 ; i< snapDir.length ; i++) {
-      AbstractSolrTestCase.recurseDelete(snapDir[i]); // clean up the snap dir
-    }
+      for(int i=0 ; i< snapDir.length ; i++) {
+        AbstractSolrTestCase.recurseDelete(snapDir[i]); // clean up the snap dir
+      }
+    }    
   }
 
   /* character copy of file using UTF-8 */