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/21 23:24:54 UTC
svn commit: r1234426 - in /lucene/dev/branches/solrcloud/solr/core/src:
java/org/apache/solr/update/DirectUpdateHandler2.java
java/org/apache/solr/update/PeerSync.java
test/org/apache/solr/update/PeerSyncTest.java
Author: yonik
Date: Sat Jan 21 22:24:53 2012
New Revision: 1234426
URL: http://svn.apache.org/viewvc?rev=1234426&view=rev
Log:
deleteByQuery w/ peersync
Modified:
lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/PeerSync.java
lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java
Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java?rev=1234426&r1=1234425&r2=1234426&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java Sat Jan 21 22:24:53 2012
@@ -250,10 +250,10 @@ public class DirectUpdateHandler2 extend
bq.add(q, Occur.MUST);
SchemaField sf = core.getSchema().getField(VersionInfo.VERSION_FIELD);
ValueSource vs = sf.getType().getValueSource(sf, null);
- ValueSourceRangeFilter filt = new ValueSourceRangeFilter(vs, null, Long.toString(cmd.version), true, true);
+ ValueSourceRangeFilter filt = new ValueSourceRangeFilter(vs, null, Long.toString(Math.abs(cmd.version)), true, true);
FunctionRangeQuery range = new FunctionRangeQuery(filt);
bq.add(range, Occur.MUST);
- // q = bq; // nocommit
+ q = bq;
}
Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/PeerSync.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/PeerSync.java?rev=1234426&r1=1234425&r2=1234426&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/PeerSync.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/PeerSync.java Sat Jan 21 22:24:53 2012
@@ -313,6 +313,7 @@ public class PeerSync {
Collections.sort(updates, updateRecordComparator);
Object o = null;
+ long lastVersion = 0;
try {
// Apply oldest updates first
for (Object obj : updates) {
@@ -322,6 +323,8 @@ public class PeerSync {
int oper = (Integer)entry.get(0);
long version = (Long) entry.get(1);
+ if (version == lastVersion && version != 0) continue;
+ lastVersion = version;
switch (oper) {
case UpdateLog.ADD:
Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java?rev=1234426&r1=1234425&r2=1234426&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java Sat Jan 21 22:24:53 2012
@@ -135,7 +135,26 @@ public class PeerSyncTest extends BaseDi
assertSync(client1, numVersions, true, shardsArr[0]);
client0.commit(); client1.commit(); queryAndCompare(params("q", "*:*", "sort","_version_ desc"), client0, client1);
+ // test that delete by query is returned even if not requested, and that it doesn't delete newer stuff than it should
+ v=2000;
+ SolrServer client = client0;
+ add(client, seenLeader, sdoc("id","2000","_version_",++v));
+ add(client, seenLeader, sdoc("id","2001","_version_",++v));
+ delQ(client, params("leader","true","_version_",Long.toString(-++v)), "id:2001 OR id:2002");
+ add(client, seenLeader, sdoc("id","2002","_version_",++v));
+ del(client, params("leader","true","_version_",Long.toString(-++v)), "2000");
+ v=2000;
+ client = client1;
+ add(client, seenLeader, sdoc("id","2000","_version_",++v));
+ ++v; // pretend we missed the add of 2001. peersync should retrieve it, but should also retrieve any deleteByQuery objects after it
+ // add(client, seenLeader, sdoc("id","2001","_version_",++v));
+ delQ(client, params("leader","true","_version_",Long.toString(-++v)), "id:2001 OR id:2002");
+ add(client, seenLeader, sdoc("id","2002","_version_",++v));
+ del(client, params("leader","true","_version_",Long.toString(-++v)), "2000");
+
+ // assertSync(client1, numVersions, true, shardsArr[0]);
+ client0.commit(); client1.commit(); queryAndCompare(params("q", "*:*", "sort","_version_ desc"), client0, client1);
}