[ 
https://issues.apache.org/jira/browse/SOLR-7462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14511141#comment-14511141
 ] 

Scott Dawson commented on SOLR-7462:
------------------------------------

A little more info about what I'm doing when the exception occurs... This 
happens sporadically when I'm indexing custom JSON:
$ curl 
'http://localhost:8983/solr/struct-json/update/json/docs?split=/&f=/**&srcField=display_json'
 -H 'Content-Type:application/json' --data-binary @tg.json

Here's the full stacktrace:
java.lang.ArrayIndexOutOfBoundsException:
        at 
org.apache.solr.util.RecordingJSONParser.getStringChars(RecordingJSONParser.java:61)
        at org.noggit.JSONParser.getString(JSONParser.java:1017)
        at 
org.apache.solr.common.util.JsonRecordReader.parseSingleFieldValue(JsonRecordReader.java:513)
        at 
org.apache.solr.common.util.JsonRecordReader.parseArrayFieldValue(JsonRecordReader.java:565)
        at 
org.apache.solr.common.util.JsonRecordReader.parseSingleFieldValue(JsonRecordReader.java:526)
        at 
org.apache.solr.common.util.JsonRecordReader$Node.handleObjectStart(JsonRecordReader.java:384)
        at 
org.apache.solr.common.util.JsonRecordReader$Node.access$300(JsonRecordReader.java:154)
        at 
org.apache.solr.common.util.JsonRecordReader$Node$1Wrapper.walk(JsonRecordReader.java:345)
        at 
org.apache.solr.common.util.JsonRecordReader.parseSingleFieldValue(JsonRecordReader.java:529)
        at 
org.apache.solr.common.util.JsonRecordReader$Node.handleObjectStart(JsonRecordReader.java:384)
        at 
org.apache.solr.common.util.JsonRecordReader$Node.access$300(JsonRecordReader.java:154)
        at 
org.apache.solr.common.util.JsonRecordReader$Node$1Wrapper.walk(JsonRecordReader.java:345)
        at 
org.apache.solr.common.util.JsonRecordReader.parseSingleFieldValue(JsonRecordReader.java:529)
        at 
org.apache.solr.common.util.JsonRecordReader.parseArrayFieldValue(JsonRecordReader.java:565)
        at 
org.apache.solr.common.util.JsonRecordReader.parseSingleFieldValue(JsonRecordReader.java:526)
        at 
org.apache.solr.common.util.JsonRecordReader$Node.handleObjectStart(JsonRecordReader.java:384)
        at 
org.apache.solr.common.util.JsonRecordReader$Node.access$300(JsonRecordReader.java:154)
        at 
org.apache.solr.common.util.JsonRecordReader$Node$1Wrapper.walk(JsonRecordReader.java:345)
        at 
org.apache.solr.common.util.JsonRecordReader.parseSingleFieldValue(JsonRecordReader.java:529)
        at 
org.apache.solr.common.util.JsonRecordReader$Node.handleObjectStart(JsonRecordReader.java:384)
        at 
org.apache.solr.common.util.JsonRecordReader$Node.parse(JsonRecordReader.java:295)
        at 
org.apache.solr.common.util.JsonRecordReader$Node.access$200(JsonRecordReader.java:154)
        at 
org.apache.solr.common.util.JsonRecordReader.streamRecords(JsonRecordReader.java:138)
        at 
org.apache.solr.handler.loader.JsonLoader$SingleThreadedJsonLoader.handleSplitMode(JsonLoader.java:205)
        at 
org.apache.solr.handler.loader.JsonLoader$SingleThreadedJsonLoader.processUpdate(JsonLoader.java:122)
        at 
org.apache.solr.handler.loader.JsonLoader$SingleThreadedJsonLoader.load(JsonLoader.java:110)
        at org.apache.solr.handler.loader.JsonLoader.load(JsonLoader.java:73)
        at 
org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:103)
        at 
org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:74)
        at 
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1984)
        at 
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:829)
        at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:446)
        at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:220)
        at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
        at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
        at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
        at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
        at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
        at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
        at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
        at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
        at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
        at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
        at 
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
        at 
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
        at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
        at org.eclipse.jetty.server.Server.handle(Server.java:368)
        at 
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
        at 
org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
        at 
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
        at 
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:647)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at 
org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at 
org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Thread.java:745)


> ArrayIndexOutOfBoundsException in RecordingJSONParser.java
> ----------------------------------------------------------
>
>                 Key: SOLR-7462
>                 URL: https://issues.apache.org/jira/browse/SOLR-7462
>             Project: Solr
>          Issue Type: Bug
>    Affects Versions: 5.1
>            Reporter: Scott Dawson
>
> With Solr 5.1 I'm getting an occasional fatal exception during indexing. It's 
> an ArrayIndexOutOfBoundsException at line 61 of 
> org/apache/solr/util/RecordingJSONParser.java. Looking at the code (see 
> below), it seems obvious that the if-statement at line 60 should use a 
> greater-than sign instead of greater-than-or-equals.
>   @Override
>   public CharArr getStringChars() throws IOException {
>     CharArr chars = super.getStringChars();
>     recordStr(chars.toString());
>     position = getPosition();
>     // if reading a String , the getStringChars do not return the closing 
> single quote or double quote
>     //so, try to capture that
>     if(chars.getArray().length >=chars.getStart()+chars.size()) {     // line 
> 60
>       char next = chars.getArray()[chars.getStart() + chars.size()]; // line 
> 61
>       if(next =='"' || next == '\'') {
>         recordChar(next);
>       }
>     }
>     return chars;
>   }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to