On 1/2/2014 10:22 PM, gpssolr2020 wrote:
> Caused by: java.lang.RuntimeException: Invalid version (expected 2, but 60)
> or the data in not in 'javabin' format

<snip>

> (Account:123+AND+DATE:["2013-11-29T00:00:00Z"+TO+"2013-11-29T23:59:59Z"])+OR+
> (Account:345+AND+DATE:["2013-11-29T00:00:00Z"+TO+"2013-11-29T23:59:59Z"])+OR+
> (Account:569+AND+DATE:["2013-11-29T00:00:00Z"+TO+"2013-11-29T23:59:59Z"])+OR+
> (Account:789+AND+DATE:["2013-11-29T00:00:00Z"+TO+"2013-11-29T23:59:59Z"])+OR+..........+OR+30k
> th record)
> 
> But we are able to delete small number of records without any issues.
> 
> Can anyone please help us on this.

Walter is right about the error message.  This indicates that Solr is
returning an error response that's in HTML or XML format rather than the
expected javabin.  The server log should actually contain more
information about what actually went wrong.

This is probably happening because the request is too big.  In my
indexing code, I send deleteByQuery requests in batches of 1000 for this
very reason.

If that date range is the same for all of the deletes in a batch, you
could make the request considerably smaller by using the following format:

DATE:["2013-11-29T00:00:00Z"+TO+"2013-11-29T23:59:59Z"] AND Account:(123
OR 345 OR 569 OR 789 OR .... 30000th-value)

The other option is to increase the max form size of your servlet
container.  In 4.1 or later, this is actually controlled by Solr
directly, not the container config, with the formdataUploadLimitInKB
attribute on the requestParsers tag in solrconfig.xml.  The default is
2048, or 2MB.  With 30000 clauses like you have described, the request
will be a little bit more than 2MB.

There is a bug in the early Jetty 8 versions (that included with Solr
4.0) that prevented the form size from being set in the jetty config:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=397130

The Jetty 6 that is included with Solr 1.x and 3.x can be properly
configured.

Thanks,
Shawn

Reply via email to