SOLR 3.5 sometimes throws java.lang.NumberFormatException: For input string: "java.math.BigDecimal:1848.66"

2012-10-31 Thread Marcin Pilaczynski
Welcome all,

We have a very strange problem with SOLR 3.5. It SOMETIMES throws exceptions:

2012-10-31 10:20:06,408 SEVERE [org.apache.solr.core.SolrCore:185]
(http-10.205.49.74-8080-155) org.apache.solr.common.SolrException:
ERROR: [doc=MyDoc # d3mo1351674222122-1 # 2012-10-31 08:03:42.122]
Error adding field 'AMOUNT'='java.math.BigDecimal:1848.66'
at 
org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:324)
at 
org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:60)
at 
org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:53)
at 
my.package.solr.dihutils.DateCheckUpdateProcessorFactory$DateCheckUpdateProcessor.processAdd(DateCheckUpdateProcessorFactory.java:91)
at 
org.apache.solr.handler.BinaryUpdateRequestHandler$2.document(BinaryUpdateRequestHandler.java:79)
at 
org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$2.readOuterMostDocIterator(JavaBinUpdateRequestCodec.java:139)
at 
org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$2.readIterator(JavaBinUpdateRequestCodec.java:129)
at 
org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:211)
at 
org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$2.readNamedList(JavaBinUpdateRequestCodec.java:114)
at 
org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:176)
at 
org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:102)
at 
org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec.unmarshal(JavaBinUpdateRequestCodec.java:144)
at 
org.apache.solr.handler.BinaryUpdateRequestHandler.parseAndLoadDocs(BinaryUpdateRequestHandler.java:69)
at 
org.apache.solr.handler.BinaryUpdateRequestHandler.access$000(BinaryUpdateRequestHandler.java:45)
at 
org.apache.solr.handler.BinaryUpdateRequestHandler$1.load(BinaryUpdateRequestHandler.java:56)
at 
org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:58)
at 
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1372)
at 
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356)
at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252)
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at 
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at 
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at 
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NumberFormatException: For input string:
"java.math.BigDecimal:1848.66"
at 
sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Double.parseDouble(Double.java:510)
at org.apache.solr.schema.TrieField.createField(TrieField.java:418)
at org.apache.solr.schema.SchemaField.createField(SchemaField.java:104)
at 
org.apache.solr.update.DocumentBuilder.addField(DocumentBuilder.java:203)
at 
org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:281)
... 36 more

Exceptions are thrown always for different BigDecimal values (so the
problem is not related to BigDecimal value).
We have no idea what's going on. Any ideas?
Greetings

-- 
Marcin P


Re: SOLR 3.5 sometimes throws java.lang.NumberFormatException: For input string: "java.math.BigDecimal:1848.66"

2012-10-31 Thread Marcin Pilaczynski
First we were adding BigDecimal object to SolrInputDocument directly
as field value.
Now we are adding BigDecimal.toPlainString() as field value.

SOLR relies on JavaBinCodec class which does de/serialization in it's
own way - some kind of bug in there?

I don't know what is the proper way to handle BigDecimal values in
SOLR 3.5 after all?

2012/10/31 Erick Erickson :
> It _looks_ like somehow the string you're sending as a BigDecimal is,
> literally, "java.math.BigDecimal:1848.66" rather than "1848.66". How are
> you generating the field value? I'm guessing that your (SolrJ?) program is
> somehow messing this up...
>
> Best
> Erick
>
>
> On Wed, Oct 31, 2012 at 7:28 AM, Marcin Pilaczynski 
> wrote:
>
>> Welcome all,
>>
>> We have a very strange problem with SOLR 3.5. It SOMETIMES throws
>> exceptions:
>>
>> 2012-10-31 10:20:06,408 SEVERE [org.apache.solr.core.SolrCore:185]
>> (http-10.205.49.74-8080-155) org.apache.solr.common.SolrException:
>> ERROR: [doc=MyDoc # d3mo1351674222122-1 # 2012-10-31 08:03:42.122]
>> Error adding field 'AMOUNT'='java.math.BigDecimal:1848.66'
>> at
>> org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:324)
>> at
>> org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:60)
>> at
>> org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:53)
>> at
>> my.package.solr.dihutils.DateCheckUpdateProcessorFactory$DateCheckUpdateProcessor.processAdd(DateCheckUpdateProcessorFactory.java:91)
>> at
>> org.apache.solr.handler.BinaryUpdateRequestHandler$2.document(BinaryUpdateRequestHandler.java:79)
>> at
>> org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$2.readOuterMostDocIterator(JavaBinUpdateRequestCodec.java:139)
>> at
>> org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$2.readIterator(JavaBinUpdateRequestCodec.java:129)
>> at
>> org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:211)
>> at
>> org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$2.readNamedList(JavaBinUpdateRequestCodec.java:114)
>> at
>> org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:176)
>> at
>> org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:102)
>> at
>> org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec.unmarshal(JavaBinUpdateRequestCodec.java:144)
>> at
>> org.apache.solr.handler.BinaryUpdateRequestHandler.parseAndLoadDocs(BinaryUpdateRequestHandler.java:69)
>> at
>> org.apache.solr.handler.BinaryUpdateRequestHandler.access$000(BinaryUpdateRequestHandler.java:45)
>> at
>> org.apache.solr.handler.BinaryUpdateRequestHandler$1.load(BinaryUpdateRequestHandler.java:56)
>> at
>> org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:58)
>> at
>> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
>> at org.apache.solr.core.SolrCore.execute(SolrCore.java:1372)
>> at
>> org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356)
>> at
>> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>> at
>> org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
>> at
>> org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
>> at
>> org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
>> at
>> org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>> at
>> org.jboss.web.tomcat.service.jca.CachedConnectionValve.invo

Re: SOLR 3.5 sometimes throws java.lang.NumberFormatException: For input string: "java.math.BigDecimal:1848.66"

2012-11-01 Thread Marcin Pilaczynski
Thanks for adding this issue to JIRA.

I tried to find the exact problem using debugger step by step
analysis, but do to lack of SOLR internals knowledge and time I didn't
find anything fishy. I only found that when we were feeding SOLR
directly with BigDecimal objects, class JavaBinCodec at line 157 was
reading this strange String "java.math.BigDecimal:1848.66" from some
kind of InputStream. But why this string was in this stream?

2012/10/31 Chris Hostetter :
>
> : SOLR relies on JavaBinCodec class which does de/serialization in it's
> : own way - some kind of bug in there?
> :
> : I don't know what is the proper way to handle BigDecimal values in
> : SOLR 3.5 after all?
>
> The safe thing to do is only add "primitive" java objects that Solr
> understands natively - String, Long, Integer, Float, Double, Boolean,
> and Date.  the JavaBinCodec has some logic for trying to deal with other
> types of objects -- but i *thought* it's fall back was to just rely on
> "toString" for any class it doesn't recognize -- so it does seem like
> there is a bug in there somewhere...
>
> https://issues.apache.org/jira/browse/SOLR-4021
>
>
> -Hoss



-- 
Marcin P