Also, I was referring to this wiki page: http://wiki.apache.org/solr/UpdateJSON#Update_Commands
Thanks Vinay On Tue, Feb 19, 2013 at 6:12 PM, Vinay Pothnis <vinay.poth...@gmail.com>wrote: > 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 >> > >> > >