You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2012/01/19 17:43:45 UTC
svn commit: r1233460 -
/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/search/TestRecovery.java
Author: yonik
Date: Thu Jan 19 16:43:45 2012
New Revision: 1233460
URL: http://svn.apache.org/viewvc?rev=1233460&view=rev
Log:
test buffering + replay of deleteByQuery
Modified:
lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/search/TestRecovery.java
Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/search/TestRecovery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/search/TestRecovery.java?rev=1233460&r1=1233459&r2=1233460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/search/TestRecovery.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/search/TestRecovery.java Thu Jan 19 16:43:45 2012
@@ -79,7 +79,10 @@ public class TestRecovery extends SolrTe
Deque<Long> versions = new ArrayDeque<Long>();
versions.addFirst(addAndGetVersion(sdoc("id", "1"), null));
- versions.addFirst( addAndGetVersion(sdoc("id", "11"), null));
+ versions.addFirst(addAndGetVersion(sdoc("id", "11"), null));
+ versions.addFirst(addAndGetVersion(sdoc("id", "12"), null));
+ versions.addFirst(deleteByQueryAndGetVersion("id:11", null));
+ versions.addFirst(addAndGetVersion(sdoc("id", "13"), null));
assertJQ(req("q","*:*"),"/response/numFound==0");
@@ -106,7 +109,7 @@ public class TestRecovery extends SolrTe
// wait until recovery has finished
assertTrue(logReplayFinish.tryAcquire(timeout, TimeUnit.SECONDS));
- assertJQ(req("q","*:*") ,"/response/numFound==2");
+ assertJQ(req("q","*:*") ,"/response/numFound==3");
// make sure we can still access versions after recovery
assertJQ(req("qt","/get", "getVersions",""+versions.size()) ,"/versions==" + versions);
@@ -116,7 +119,7 @@ public class TestRecovery extends SolrTe
assertU(delI("2"));
assertU(adoc("id","4"));
- assertJQ(req("q","*:*") ,"/response/numFound==2");
+ assertJQ(req("q","*:*") ,"/response/numFound==3");
h.close();
createCore();
@@ -125,7 +128,7 @@ public class TestRecovery extends SolrTe
// wait until recovery has finished
assertTrue(logReplayFinish.tryAcquire(timeout, TimeUnit.SECONDS));
- assertJQ(req("q","*:*") ,"/response/numFound==4");
+ assertJQ(req("q","*:*") ,"/response/numFound==5");
assertJQ(req("q","id:2") ,"/response/numFound==0");
// no updates, so insure that recovery does not run
@@ -135,7 +138,7 @@ public class TestRecovery extends SolrTe
// Solr should kick this off now
// h.getCore().getUpdateHandler().getUpdateLog().recoverFromLog();
- assertJQ(req("q","*:*") ,"/response/numFound==4");
+ assertJQ(req("q","*:*") ,"/response/numFound==5");
Thread.sleep(100);
assertEquals(permits, logReplay.availablePermits()); // no updates, so insure that recovery didn't run
@@ -194,19 +197,21 @@ public class TestRecovery extends SolrTe
assertEquals(UpdateLog.State.BUFFERING, ulog.getState());
// simulate updates from a leader
- updateJ(jsonAdd(sdoc("id","1", "_version_","101")), params(SEEN_LEADER,SEEN_LEADER_VAL));
- updateJ(jsonAdd(sdoc("id","2", "_version_","102")), params(SEEN_LEADER,SEEN_LEADER_VAL));
- updateJ(jsonAdd(sdoc("id","3", "_version_","103")), params(SEEN_LEADER,SEEN_LEADER_VAL));
- deleteAndGetVersion("1", params(SEEN_LEADER,SEEN_LEADER_VAL, "_version_","-201"));
+ updateJ(jsonAdd(sdoc("id","1", "_version_","1010")), params(SEEN_LEADER,SEEN_LEADER_VAL));
+ updateJ(jsonAdd(sdoc("id","11", "_version_","1015")), params(SEEN_LEADER,SEEN_LEADER_VAL));
+ updateJ(jsonDelQ("id:1 id:11 id:2 id:3"), params(SEEN_LEADER,SEEN_LEADER_VAL, "_version_","-1017"));
+ updateJ(jsonAdd(sdoc("id","2", "_version_","1020")), params(SEEN_LEADER,SEEN_LEADER_VAL));
+ updateJ(jsonAdd(sdoc("id","3", "_version_","1030")), params(SEEN_LEADER,SEEN_LEADER_VAL));
+ deleteAndGetVersion("1", params(SEEN_LEADER,SEEN_LEADER_VAL, "_version_","-2010"));
- assertJQ(req("qt","/get", "getVersions","4")
- ,"=={'versions':[-201,103,102,101]}"
+ assertJQ(req("qt","/get", "getVersions","6")
+ ,"=={'versions':[-2010,1030,1020,-1017,1015,1010]}"
);
assertU(commit());
- assertJQ(req("qt","/get", "getVersions","4")
- ,"=={'versions':[-201,103,102,101]}"
+ assertJQ(req("qt","/get", "getVersions","6")
+ ,"=={'versions':[-2010,1030,1020,-1017,1015,1010]}"
);
// updates should be buffered, so we should not see any results yet.
@@ -233,8 +238,8 @@ public class TestRecovery extends SolrTe
assertEquals(UpdateLog.State.ACTIVE, ulog.getState());
- assertJQ(req("qt","/get", "getVersions","4")
- ,"=={'versions':[-201,103,102,101]}"
+ assertJQ(req("qt","/get", "getVersions","6")
+ ,"=={'versions':[-2010,1030,1020,-1017,1015,1010]}"
);
@@ -247,24 +252,24 @@ public class TestRecovery extends SolrTe
assertEquals(UpdateLog.State.BUFFERING, ulog.getState());
Long ver = getVer(req("qt","/get", "id","3"));
- assertEquals(103L, ver.longValue());
+ assertEquals(1030L, ver.longValue());
// add a reordered doc that shouldn't overwrite one in the index
updateJ(jsonAdd(sdoc("id","3", "_version_","3")), params(SEEN_LEADER,SEEN_LEADER_VAL));
// reorder two buffered updates
- updateJ(jsonAdd(sdoc("id","4", "_version_","104")), params(SEEN_LEADER,SEEN_LEADER_VAL));
- deleteAndGetVersion("4", params(SEEN_LEADER,SEEN_LEADER_VAL, "_version_","-94")); // this update should not take affect
- updateJ(jsonAdd(sdoc("id","6", "_version_","106")), params(SEEN_LEADER,SEEN_LEADER_VAL));
- updateJ(jsonAdd(sdoc("id","5", "_version_","105")), params(SEEN_LEADER,SEEN_LEADER_VAL));
- updateJ(jsonAdd(sdoc("id","8", "_version_","108")), params(SEEN_LEADER,SEEN_LEADER_VAL));
+ updateJ(jsonAdd(sdoc("id","4", "_version_","1040")), params(SEEN_LEADER,SEEN_LEADER_VAL));
+ deleteAndGetVersion("4", params(SEEN_LEADER,SEEN_LEADER_VAL, "_version_","-940")); // this update should not take affect
+ updateJ(jsonAdd(sdoc("id","6", "_version_","1060")), params(SEEN_LEADER,SEEN_LEADER_VAL));
+ updateJ(jsonAdd(sdoc("id","5", "_version_","1050")), params(SEEN_LEADER,SEEN_LEADER_VAL));
+ updateJ(jsonAdd(sdoc("id","8", "_version_","1080")), params(SEEN_LEADER,SEEN_LEADER_VAL));
// test that delete by query is at least buffered along with everything else so it will delete the
// currently buffered id:8 (even if it doesn't currently support versioning)
- updateJ("{\"delete\": { \"query\":\"id:2 OR id:8\" }}", params(SEEN_LEADER,SEEN_LEADER_VAL, "_version_","-300"));
+ updateJ("{\"delete\": { \"query\":\"id:2 OR id:8\" }}", params(SEEN_LEADER,SEEN_LEADER_VAL, "_version_","-3000"));
- assertJQ(req("qt","/get", "getVersions","10")
- ,"=={'versions':[-300,108,105,106,-94,104,3,-201,103,102]}" // the "3" appears because versions aren't checked while buffering
+ assertJQ(req("qt","/get", "getVersions","13")
+ ,"=={'versions':[-3000,1080,1050,1060,-940,1040,3,-2010,1030,1020,-1017,1015,1010]}" // the "3" appears because versions aren't checked while buffering
);
logReplay.drainPermits();
@@ -276,22 +281,22 @@ public class TestRecovery extends SolrTe
logReplay.release(1);
// now add another update
- updateJ(jsonAdd(sdoc("id","7", "_version_","107")), params(SEEN_LEADER,SEEN_LEADER_VAL));
+ updateJ(jsonAdd(sdoc("id","7", "_version_","1070")), params(SEEN_LEADER,SEEN_LEADER_VAL));
// a reordered update that should be dropped
- deleteAndGetVersion("5", params(SEEN_LEADER,SEEN_LEADER_VAL, "_version_","-95"));
+ deleteAndGetVersion("5", params(SEEN_LEADER,SEEN_LEADER_VAL, "_version_","-950"));
- deleteAndGetVersion("6", params(SEEN_LEADER,SEEN_LEADER_VAL, "_version_","-206"));
+ deleteAndGetVersion("6", params(SEEN_LEADER,SEEN_LEADER_VAL, "_version_","-2060"));
logReplay.release(1000);
UpdateLog.RecoveryInfo recInfo = rinfoFuture.get();
assertJQ(req("q", "*:*", "sort","id asc", "fl","id,_version_")
, "/response/docs==["
- + "{'id':'3','_version_':103}"
- + ",{'id':'4','_version_':104}"
- + ",{'id':'5','_version_':105}"
- + ",{'id':'7','_version_':107}"
+ + "{'id':'3','_version_':1030}"
+ + ",{'id':'4','_version_':1040}"
+ + ",{'id':'5','_version_':1050}"
+ + ",{'id':'7','_version_':1070}"
+"]"
);