: <delete>
:    <query>collection:foo</query>
: </delete>
: <commit waitFlush="true" waitSearcher="true" />
: <add>
:    <doc>
:       .....
: </add>
: <commit waitFlush="true" waitSearcher="true" />

        ...

: Finally, here's the behavior we're seeing.  In some cases, usually when
: the index is starting to get larger (approaching 500,000 documents),
: the above procedure will fail to add anything to the index.  That is, none
: of the commands return an error code, there is no indication of a problem
: in the log files and the process DOES take some amount of time to

That really shouldn't happen.  if you were using embedded solr, or some 
crazy UpdateProcessor, i can imagine encountering a code path 
where your adds got processed before your delete -- but not if you are 
using HTTP to send XML like that each in a separate HTTP Connection as you 
describe.

: If this is happening, how can I know when the delete has been processed
: before initiating the add process?

When the <commit> command after the delete returns a 200 status code, the 
delete is done.  *DONE* Done, completley done, over and done nothing funky 
going on under the covers done.

can you post some of your log messages from one of these problematic 
instances?  I'm particularly intersted in the INFO level messages from the 
LogUpdateProcessor.finsh and SolrCore.execute that say things like...

Jul 4, 2009 12:38:43 PM org.apache.solr.update.processor.LogUpdateProcessor 
finish
INFO: {} 0 0
Jul 4, 2009 12:38:43 PM org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/update params={} status=0 QTime=0 

...that was a delete (not sure why the msg from LogUpdateProcessor is 
empty) then somehting like this from the commit...

Jul 4, 2009 12:39:55 PM org.apache.solr.update.DirectUpdateHandler2 commit
INFO: start commit(optimize=false,waitFlush=true,waitSearcher=true)
Jul 4, 2009 12:39:55 PM org.apache.solr.search.SolrIndexSearcher <init>
INFO: Opening searc...@15ccfb1 main
   < ... snip a bunch of logging about autowarming various caches ... >
Jul 4, 2009 12:39:55 PM 
org.apache.solr.update.processor.LogUpdateProcessor finish
INFO: {commit=} 0 50
Jul 4, 2009 12:39:55 PM org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/update params={} status=0 QTime=50 

...and then a bunch of adds...

Jul 4, 2009 12:41:37 PM org.apache.solr.update.processor.LogUpdateProcessor 
finish
INFO: {add=[SP2514N, 6H500F0]} 0 24
Jul 4, 2009 12:41:37 PM org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/update params={} status=0 QTime=24 
Jul 4, 2009 12:41:37 PM org.apache.solr.update.processor.LogUpdateProcessor 
finish
INFO: {add=[F8V7067-APL-KIT, IW-02]} 0 9

...which should be followed by another commit getting logged.

These log messages are all from the example runnning in jetty, your log 
format may vary.  What I'm particularly interested is the timestamps on 
these log messages so if you can turn on millisecond time resolution that 
would be best ... i want to see when exactly the delete/commit/add/commit 
comands are getting executed.




-Hoss

Reply via email to