Return-Path: X-Original-To: apmail-lucene-commits-archive@www.apache.org Delivered-To: apmail-lucene-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 498DA9859 for ; Tue, 6 Dec 2011 05:06:34 +0000 (UTC) Received: (qmail 47490 invoked by uid 500); 6 Dec 2011 05:06:32 -0000 Mailing-List: contact commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@lucene.apache.org Delivered-To: mailing list commits@lucene.apache.org Received: (qmail 47482 invoked by uid 99); 6 Dec 2011 05:06:30 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 06 Dec 2011 05:06:30 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 06 Dec 2011 05:06:28 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id F09BA23888E7; Tue, 6 Dec 2011 05:06:07 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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/ Date: Tue, 06 Dec 2011 05:06:07 -0000 To: commits@lucene.apache.org From: markrmiller@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111206050607.F09BA23888E7@eris.apache.org> 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 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 documents = null; - private List deleteById = null; + private Map deleteById = null; private List 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(); + deleteById = new HashMap(); } - deleteById.add(id); + deleteById.put(id, null); + return this; + } + + public UpdateRequestExt deleteById(String id, Long version) { + if (deleteById == null) { + deleteById = new HashMap(); + } + deleteById.put(id, version); return this; } public UpdateRequestExt deleteById(List ids) { if (deleteById == null) { - deleteById = new ArrayList(ids); + deleteById = new HashMap(); } 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(""); if (deleteI) { - for (String id : deleteById) { - writer.append(""); - XML.escapeCharData(id, writer); + for (Map.Entry entry : deleteById.entrySet()) { + writer.append(""); + + XML.escapeCharData(entry.getKey(), writer); writer.append(""); } } @@ -216,8 +234,8 @@ public class UpdateRequestExt extends Ab return docLists; } - - public List getDeleteById() { + + public Map getDeleteById() { return deleteById; }