Thanks for the reply Eric. * I am not using SolrJ * I am using plain http (apache http client) to send a batch of commands. * As I mentioned below, the json payload I am sending is like this (some of the fields have been removed for brevity) * POST http://localhost:8983/solr/sample/update * POST BODY {"add": {"doc": {"field-1":"1359591340025","field-2":1361301249330,"doc_id":"e.1.78"} },"add": {"doc": {"field-1":"1360089709282","field-2":1361301249377,"doc_id":"e.1.78"} },"delete": { "id": "e.1.78" }}
The evidence is from the logs on the 2 shards. The following is the log on shard 1: *INFO: [sample] webapp=/solr path=/update params={} {add=[e.1.80, e.1.80, e.1.80, e.1.80, e.1.80, e.1.80, e.1.80],delete=[e.1.80]} 0 48* * * The following is the log on shard 2: *INFO: [sample] webapp=/solr path=/update params={update.distrib=TOLEADER&wt=javabin&version=2} {delete=[e.1.80 (-1427453640312881152)]} 0 2* *Feb 19, 2013 6:04:34 PM org.apache.solr.update.processor.LogUpdateProcessor finish* *INFO: [sample] webapp=/solr path=/update params={distrib.from= http://10.10.76.23:8983/solr/ch-madden/&update.distrib=TOLEADER&wt=javabin&version=2} {add=[e.1* *.80 (1427453640314978304), e.1.80 (1427453640338046976), e.1.80 (1427453640342241280), e.1.80 (1427453640346435584), e.1.80 (1427453640349581312), e.1.80 (14274* *53640351678464), e.1.80 (1427453640353775616)]} 0 41* As you can see, shard 2 gets the "delete" command first and then the "add/update" commands. I am sure I have waited until the commit happens. And besides, I am also using the "softAutoCommit" at 1 second. So, the query results should be updated quite quickly. Any pointers would be very helpful. Thanks! Vinay On Tue, Feb 19, 2013 at 5:57 PM, Erick Erickson <erickerick...@gmail.com>wrote: > Hmmm, this would surprise me unless the add and delete were going to > separate machines. how are you sending them? SolrJ? and in a single > server.add(doclist) format or with individual adds? > > Individual commands being sent can come 'round out of sequence, that's what > the whole optimistic locking bit is about. > > I guess my other question is what's your evidence that this isn't working? > Are you just querying your index and looking at the results? If so, are you > sure you're waiting until after any autocommit intervals? > > Best > Erick > > > On Tue, Feb 19, 2013 at 2:23 PM, Vinay Pothnis <vinay.poth...@gmail.com > >wrote: > > > Hello, > > > > I have the following set up: > > > > * solr cloud 4.1.0 > > * 2 shards with embedded zookeeper > > * plain http to communicate with solr > > > > I am testing a scenario where i am batching multiple commands and sending > > to solr. Since this is the solr cloud setup, I am always sending the > > updates to one of the nodes in the cloud. > > > > e.g.: http://localhost:8983/solr/sample/update > > > > *example set of commands:* > > {"add": {"doc": > > {"field-1":"1359591340025","field-2":1361301249330,"doc_id":"e.1.78"} > > },"add": {"doc": > > {"field-1":"1360089709282","field-2":1361301249377,"doc_id":"e.1.78"} > > },"delete": { "id": "e.1.78" }} > > > > When I include deletes and updates in the batch, sometimes, the order of > > the commands is not maintained. > > > > Specifically, if the document does not belong to the shard that I am > > communicating with (lets say shard-1), then shard-1 sends the commands to > > "shard-2". In this case, the "deletes" are sent first and then the > updates. > > This changes the order that I originally sent. > > > > Any inputs on why the order is not maintained? > > > > Thanks! > > Vinay > > >