Hi everyone ,

We have hit this strange bug using the atomic update functionality of both SOLR 
4.0 and SOLR 4.2.1.
We're currently posting a JSON formatted file to the core's updater using a 
simple curl method however we've run a very bizarre error where periodically it 
will fail and return a 400 error message. If we were to send the exact same 
request and file 5 minutes later, sometimes it will be accepted and return a 
200 and other times it will continue to throw 400's.  This tends to happen when 
the SOLR is receiving a lot of updates and restarting tomcat seems to clear up 
the issue, however I feel that there is probably something important that I am 
missing.

The error message that it throws is quite strange and I don't really feel that 
it means very much because we can fire the exact same message 5 minutes later 
and it will happily fill that field. I am positive that I am only sending the 
value 9999965.00 in this case.

2013-04-25 00:20:39,373 [ERROR] org.apache.solr.core.SolrCore 
org.apache.solr.common.SolrException: ERROR: [doc=1764656] Error adding field 
'maxPrice'='java.math.BigDecimal:9999965.0000' msg=For input string: 
"java.math.BigDecimal:9999965.0000' msg=For input string: 
"java.math.BigDecimal:9999965.0000"
>---at 
>org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:300)
>---at 
>org.apache.solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.java:73)
>---at 
>org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:199)
>---at 
>org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69)
>---at 
>org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51)
>---at 
>org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:451)
>---at 
>org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:587)
>---at 
>org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:346)
>---at 
>org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100)
>---at 
>org.apache.solr.handler.loader.JsonLoader$SingleThreadedJsonLoader.handleAdds(JsonLoader.java:387)
>---at 
>org.apache.solr.handler.loader.JsonLoader$SingleThreadedJsonLoader.processUpdate(JsonLoader.java:112)
>---at 
>org.apache.solr.handler.loader.JsonLoader$SingleThreadedJsonLoader.load(JsonLoader.java:96)
>---at org.apache.solr.handler.loader.JsonLoader.load(JsonLoader.java:60)
>---at 
>org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:92)
>---at 
>org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:74)
>---at 
>org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
>---at org.apache.solr.core.SolrCore.execute(SolrCore.java:1817)
>---at 
>org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:639)
>---at 
>org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:345)
>---at 
>org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:141)
>---at 
>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>---at 
>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>---at 
>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>---at 
>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>---at 
>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>---at 
>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>---at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)
>---at 
>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>---at 
>org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>---at 
>org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
>---at 
>org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>---at 
>org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
>---at 
>java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>---at 
>java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>---at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NumberFormatException: For input string: 
"java.math.BigDecimal:9999965.0000"
>---at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)
>---at java.lang.Float.parseFloat(Float.java:452)
>---at org.apache.solr.schema.TrieField.createField(TrieField.java:598)
>---at org.apache.solr.schema.TrieField.createFields(TrieField.java:655)
>---at org.apache.solr.update.DocumentBuilder.addField(DocumentBuilder.java:180)
>---at 
>org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:251)
>---... 34 more

The field in question (maxPrice) is defined as float and is one of many floats 
within the schema.

Here is my SOLR configurations for the core:

<abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>
<luceneMatchVersion>LUCENE_42</luceneMatchVersion>
<indexConfig>
    <maxFieldLength>10000</maxFieldLength>
    <writeLockTimeout>1000</writeLockTimeout>
    <commitLockTimeout>10000</commitLockTimeout>
    <lockType>native</lockType>
    <useCompoundFile>false</useCompoundFile>
    <ramBufferSizeMB>32</ramBufferSizeMB>
    <mergeFactor>5</mergeFactor>
    <unlockOnStartup>false</unlockOnStartup>
    <reopenReaders>true</reopenReaders>
    <deletionPolicy class="solr.SolrDeletionPolicy">
      <str name="maxCommitsToKeep">1</str>
      <str name="maxOptimizedCommitsToKeep">0</str>
    </deletionPolicy>
    <infoStream file="INFOSTREAM.txt">false</infoStream>
  </indexConfig>
  <jmx/>
  <updateHandler class="solr.DirectUpdateHandler2">
      <updateLog>
          <str name="dir">${solr.data.dir:}</str>
      </updateLog>
      <maxPendingDeletes>100000</maxPendingDeletes>
  </updateHandler>
  <query>
    <maxBooleanClauses>1024</maxBooleanClauses>
    <filterCache class="solr.FastLRUCache" size="7100" initialSize="3550" 
autowarmCount="3550"/>
    <queryResultCache class="solr.FastLRUCache" size="11275" initialSize="5638" 
autowarmCount="2800"/>
    <documentCache class="solr.LRUCache" size="10000" initialSize="10000"/>
    <enableLazyFieldLoading>true</enableLazyFieldLoading>
    <queryResultWindowSize>96</queryResultWindowSize>
    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
    <listener event="newSearcher" class="solr.QuerySenderListener">
      <arr name="queries">
      </arr>
</listener>-

We had this exact same issue with SOLR 4.0 as well, similar to the issue faced 
in this Jira

https://issues.apache.org/jira/browse/SOLR-4021

The strange thing is that this only happens sporadically which really throws me 
off. Has anyone experienced something like this?

Thanks again,

Dave Fennessy

Reply via email to