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