Hi,

we are running Solr 7.3 in cloud mode. Last time I noticed we have a lot of
errors in our log like below:

null:java.lang.IllegalArgumentException: docID must be >= 0 and <
maxDoc=2757277 (got docID=2764367)
    at 
org.apache.lucene.index.BaseCompositeReader.readerIndex(BaseCompositeReader.java:190)
    at 
org.apache.lucene.index.BaseCompositeReader.document(BaseCompositeReader.java:117)
    at 
org.apache.solr.search.SolrDocumentFetcher.doc(SolrDocumentFetcher.java:220)
    at org.apache.solr.response.DocsStreamer.next(DocsStreamer.java:98)
    at org.apache.solr.response.DocsStreamer.next(DocsStreamer.java:57)
    at c.d.m.i.ProfileResponseWriter.toSolrDocumentList(SolrConverter.java:25)
    at c.d.m.i.ProfileResponseWriter.write(ProfileResponseWriter.java:197)
    at 
org.apache.solr.response.QueryResponseWriterUtil.writeQueryResponse(QueryResponseWriterUtil.java:65)
    at org.apache.solr.servlet.HttpSolrCall.writeResponse(HttpSolrCall.java:789)
    at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:526)
    ...


ProfileResponseWriter code:

import org.apache.solr.response.QueryResponseWriter;import
org.apache.solr.response.ResultContext;import
org.apache.solr.response.SolrQueryResponse;
class ProfileResponseWriterBase implements QueryResponseWriter {

    @Override
    public void write(Writer writer, SolrQueryRequest request,
SolrQueryResponse response) {
        ...
        SolrDocumentList resp = prepareResp(response, objectWriter, writer);
        ...
    }

    private SolrDocumentList prepareResp(SolrQueryResponse response,
ObjectWriter objectWriter, Writer writer) {
        ...
        Object resultContext = response.getValues().get("response");
        if (resultContext instanceof ResultContext) {
            ResultContext context = ((ResultContext) resultContext);
            return toSolrDocumentList(request, context);
        }
        ...
    }

    private SolrDocumentList toSolrDocumentList(ResultContext resultContext) {
        Iterator<SolrDocument> docIterators =
resultContext.getProcessedDocuments();
        SolrDocumentList list = new SolrDocumentList();
        list.setNumFound(resultContext.getDocList().matches());
        list.setMaxScore(resultContext.getDocList().maxScore());
        list.setStart(resultContext.getDocList().offset());
        while (docIterators.hasNext()) {
            SolrDocument solrDocument = docIterators.next();
//exception appears here
            list.add(solrDocument);
        }
        return list;
    }


Could somebody help me to figure out how can I resolve this issue? Is that
a Solr issue, or we have implemented response writer incorrectly?


-- 
Best regards,
Yauheni

Reply via email to