You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2011/12/06 06:06:07 UTC

svn commit: r1210782 - in /lucene/dev/branches/solrcloud/solr: core/src/java/org/apache/solr/handler/ core/src/java/org/apache/solr/update/ core/src/test/org/apache/solr/cloud/ solrj/src/java/org/apache/solr/client/solrj/request/

Author: markrmiller
Date: Tue Dec  6 05:06:07 2011
New Revision: 1210782

URL: http://svn.apache.org/viewvc?rev=1210782&view=rev
Log:
allow delete version to be specified in solr xml so that it can be propagated by the cmd distributor - allows distrib delete to work - also enable a couple delete tests that where commented out / ignored

Modified:
    lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/XMLLoader.java
    lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java
    lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
    lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/BasicFullDistributedZkTest.java
    lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/FullDistributedZkTest.java
    lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequestExt.java

Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/XMLLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/XMLLoader.java?rev=1210782&r1=1210781&r2=1210782&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/XMLLoader.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/XMLLoader.java Tue Dec  6 05:06:07 2011
@@ -204,12 +204,22 @@ class XMLLoader extends ContentStreamLoa
                     "unexpected XML tag /delete/" + mode);
           }
           text.setLength(0);
+          
+          if ("id".equals(mode)) {
+            for (int i = 0; i < parser.getAttributeCount(); i++) {
+              String attrName = parser.getAttributeLocalName(i);
+              String attrVal = parser.getAttributeValue(i);
+              if (XmlUpdateRequestHandler.VERSION.equals(attrName)) {
+                deleteCmd.setVersion(Long.parseLong(attrVal));
+              }
+            }
+          }
           break;
 
         case XMLStreamConstants.END_ELEMENT:
           String currTag = parser.getLocalName();
           if ("id".equals(currTag)) {
-            deleteCmd.setId(text.toString());
+            deleteCmd.setId(text.toString());         
           } else if ("query".equals(currTag)) {
             deleteCmd.setQuery(text.toString());
           } else if ("delete".equals(currTag)) {

Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java?rev=1210782&r1=1210781&r2=1210782&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java Tue Dec  6 05:06:07 2011
@@ -46,6 +46,8 @@ public class XmlUpdateRequestHandler ext
 
   public static final String OVERWRITE = "overwrite";
   
+  public static final String VERSION = "version";
+  
   // NOTE: This constant is for use with the <add> XML tag, not the HTTP param with same name
   public static final String COMMIT_WITHIN = "commitWithin";
 

Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java?rev=1210782&r1=1210781&r2=1210782&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java Tue Dec  6 05:06:07 2011
@@ -242,7 +242,7 @@ public class SolrCmdDistributor {
     
     for (DeleteUpdateCommand cmd : dlist) {
       if (cmd.isDeleteById()) {
-        ureq.deleteById(cmd.getId());
+        ureq.deleteById(cmd.getId(), cmd.getVersion());
       } else {
         ureq.deleteByQuery(cmd.query);
       }

Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/BasicFullDistributedZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/BasicFullDistributedZkTest.java?rev=1210782&r1=1210781&r2=1210782&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/BasicFullDistributedZkTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/BasicFullDistributedZkTest.java Tue Dec  6 05:06:07 2011
@@ -27,7 +27,6 @@ import org.junit.Ignore;
 /**
  * Super basic testing, no shard restarting or anything.
  */
-@Ignore("distrib delete not working yet")
 public class BasicFullDistributedZkTest extends FullDistributedZkTest {
   
   
@@ -44,9 +43,6 @@ public class BasicFullDistributedZkTest 
   
   @Override
   public void doTest() throws Exception {
-    // GRRRRR - this is needed because it takes a while for all the shards to learn about the cluster state
-    Thread.sleep(5000);
-    
     handle.clear();
     handle.put("QTime", SKIPVAL);
     handle.put("timestamp", SKIPVAL);

Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/FullDistributedZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/FullDistributedZkTest.java?rev=1210782&r1=1210781&r2=1210782&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/FullDistributedZkTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/FullDistributedZkTest.java Tue Dec  6 05:06:07 2011
@@ -692,39 +692,39 @@ public class FullDistributedZkTest exten
 
     assertDocCounts();
     
-//    String docId = "99999999";
-//    indexr("id", docId, t1, "originalcontent");
-//    
-//    commit();
-//    
-//    ModifiableSolrParams params = new ModifiableSolrParams();
-//    params.add("distrib", "true");
-//    params.add("q", t1 + ":originalcontent");
-//    QueryResponse results = clients.get(0).query(params);
-//    assertEquals(1, results.getResults().getNumFound());
-//    System.out.println("results:" + results);
-//    
-//    // update doc
-//    indexr("id", docId, t1, "updatedcontent");
-//    
-//    commit();
-//    
-//    results = clients.get(0).query(params);
-//    assertEquals(0, results.getResults().getNumFound());
-//    
-//    params.set("q", t1 + ":updatedcontent");
-//    
-//    results = clients.get(0).query(params);
-//    assertEquals(1, results.getResults().getNumFound());
-//    
-//    UpdateRequest uReq = new UpdateRequest();
-//    uReq.setParam(UpdateParams.UPDATE_CHAIN, DISTRIB_UPDATE_CHAIN);
-//    uReq.deleteById(docId).process(clients.get(0));
-//    
-//    commit();
-//    
-//    results = clients.get(0).query(params);
-//    assertEquals(0, results.getResults().getNumFound());
+    String docId = "99999999";
+    indexr("id", docId, t1, "originalcontent");
+    
+    commit();
+    
+    ModifiableSolrParams params = new ModifiableSolrParams();
+    params.add("distrib", "true");
+    params.add("q", t1 + ":originalcontent");
+    QueryResponse results = clients.get(0).query(params);
+    assertEquals(1, results.getResults().getNumFound());
+    System.out.println("results:" + results);
+    
+    // update doc
+    indexr("id", docId, t1, "updatedcontent");
+    
+    commit();
+    
+    results = clients.get(0).query(params);
+    assertEquals(0, results.getResults().getNumFound());
+    
+    params.set("q", t1 + ":updatedcontent");
+    
+    results = clients.get(0).query(params);
+    assertEquals(1, results.getResults().getNumFound());
+    
+    UpdateRequest uReq = new UpdateRequest();
+    uReq.setParam(UpdateParams.UPDATE_CHAIN, DISTRIB_UPDATE_CHAIN);
+    uReq.deleteById(docId).process(clients.get(0));
+    
+    commit();
+    
+    results = clients.get(0).query(params);
+    assertEquals(0, results.getResults().getNumFound());
     
     // expire a session...
     //CloudJettyRunner cloudJetty = shardToJetty.get("shard1").get(0);

Modified: lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequestExt.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequestExt.java?rev=1210782&r1=1210781&r2=1210782&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequestExt.java (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequestExt.java Tue Dec  6 05:06:07 2011
@@ -22,7 +22,9 @@ import java.io.StringWriter;
 import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.common.SolrInputDocument;
@@ -33,7 +35,7 @@ import org.apache.solr.common.util.XML;
 public class UpdateRequestExt extends AbstractUpdateRequest {
   
   private List<SolrDoc> documents = null;
-  private List<String> deleteById = null;
+  private Map<String,Long> deleteById = null;
   private List<String> deleteQuery = null;
   
   private class SolrDoc {
@@ -105,17 +107,27 @@ public class UpdateRequestExt extends Ab
   
   public UpdateRequestExt deleteById(String id) {
     if (deleteById == null) {
-      deleteById = new ArrayList<String>();
+      deleteById = new HashMap<String,Long>();
     }
-    deleteById.add(id);
+    deleteById.put(id, null);
+    return this;
+  }
+  
+  public UpdateRequestExt deleteById(String id, Long version) {
+    if (deleteById == null) {
+      deleteById = new HashMap<String,Long>();
+    }
+    deleteById.put(id, version);
     return this;
   }
   
   public UpdateRequestExt deleteById(List<String> ids) {
     if (deleteById == null) {
-      deleteById = new ArrayList<String>(ids);
+      deleteById = new HashMap<String,Long>();
     } else {
-      deleteById.addAll(ids);
+      for (String id : ids) {
+        deleteById.put(id, null);
+      }
     }
     return this;
   }
@@ -178,9 +190,15 @@ public class UpdateRequestExt extends Ab
     if (deleteI || deleteQ) {
       writer.append("<delete>");
       if (deleteI) {
-        for (String id : deleteById) {
-          writer.append("<id>");
-          XML.escapeCharData(id, writer);
+        for (Map.Entry<String,Long> entry : deleteById.entrySet()) {
+          writer.append("<id");
+          Long version = entry.getValue();
+          if (version != null) {
+            writer.append(" version=\"" + version + "\"");
+          }
+          writer.append(">");
+          
+          XML.escapeCharData(entry.getKey(), writer);
           writer.append("</id>");
         }
       }
@@ -216,8 +234,8 @@ public class UpdateRequestExt extends Ab
 
     return docLists;
   }
-  
-  public List<String> getDeleteById() {
+
+  public Map<String,Long> getDeleteById() {
     return deleteById;
   }