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 */