Hi, Solr users

I have a oom issue in SolrIndexSearcher.buildTopDocsCollector in Solr7.7.2, I 
can see the stack is from below:

at 
org.apache.lucene.search.FieldComparator$LongComparator.<init>(FieldComparator.java:359)
 ~[?:?] at org.apache.lucene.search.SortField.getComparator(SortField.java:354) 
~[?:?] at 
org.apache.lucene.search.FieldValueHitQueue.<init>(FieldValueHitQueue.java:140) 
~[?:?] at 
org.apache.lucene.search.FieldValueHitQueue.<init>(FieldValueHitQueue.java:32) 
~[?:?] at 
org.apache.lucene.search.FieldValueHitQueue$OneComparatorFieldValueHitQueue.<init>(FieldValueHitQueue.java:62)
 ~[?:?] at 
org.apache.lucene.search.FieldValueHitQueue.create(FieldValueHitQueue.java:163) 
~[?:?] at 
org.apache.lucene.search.TopFieldCollector.create(TopFieldCollector.java:557) 
~[?:?] at 
org.apache.solr.search.SolrIndexSearcher.buildTopDocsCollector(SolrIndexSearcher.java:1526)
 ~[?:?] at 
org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1602)
 ~[?:?] at 
org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1421)
 ~[?:?] at 
org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:568) 
~[?:?] at 
org.apache.solr.handler.component.QueryComponent.doProcessUngroupedSearch(QueryComponent.java:1435)
 ~[?:?] at 
org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:375)
 ~[?:?] at 
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
 ~[?:?] at 
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
 ~[?:?]
…

When I try to have a Arthas<https://arthas.aliyun.com/> tool to attach Solr to 
monitor this (watch org.apache.solr.search.SolrIndexSearcher 
buildTopDocsCollector '{params, target.registryName}' "params[0]>5000000 and 
params[1].sort != null" -x 3 -b), I can catch below case,

method=org.apache.solr.search.SolrIndexSearcher.buildTopDocsCollector 
location=AtEnter
ts=2021-07-01 08:29:35; [cost=0.003948ms] result=@ArrayList[
    @Object[][
        @Integer[6032340],
        @QueryCommand[
            query=@BooleanQuery[(xptLabels_fr:*)^5.0 (xptLabels_bsID:*)^5.0 
(xptLabels_bs:*)^5.0 (xptName:*)^10.0 (xptLabels_br:*)^5.0 
(xptLabels_enGB:*)^5.0 (xptLabels_deCH:*)^5.0 (xptLabels:*)^5.0 
(xptLabels_ro:*)^5.0 (xptDescription:*)^5.0 (xptLabels_ja:*)^5.0 
(xptLabels_bg:*)^5.0 (xptLabels_fi:*)^5.0 (xptLabels_ru:*)^5.0 
(xptLabels_no:*)^5.0 (xptLabels_nl:*)^5.0 (xptLabels_it:*)^5.0 
(xptLabels_el:*)^5.0 (xptLabels_nb:*)^5.0 (xptLabels_vi:*)^5.0 
(xptLabels_ar:*)^5.0 (xptLabels_es:*)^5.0 (xptLabels_iw:*)^5.0 
(xptLabels_frCA:*)^5.0 (xptLabels_uk:*)^5.0 (xptLabels_enRTL:*)^5.0 
(xptLabels_hu:*)^5.0 (xptLabels_hr:*)^5.0 (xptLabels_lt:*)^5.0 
(xptAuthorName:*)^5.0 (xptLabels_da:*)^5.0 (xptLabels_pl:*)^5.0 
(xptLabels_cy:*)^5.0 (xptLabels_pt:*)^5.0 (xptLabels_tw:*)^5.0 
(xptLabels_de:*)^5.0 (xptLabels_hi:*)^5.0 (xptLabels_tr:*)^5.0 
(xptLabels_cn:*)^5.0 (xptLabels_esMX:*)^5.0 (xptLabels_th:*)^5.0 
(xptLabels_cs:*)^5.0 (xptLabels_sl:*)^5.0 (xptLabels_sk:*)^5.0 
(xptLabels_ko:*)^5.0 (xptLabels_svSE:*)^5.0 (xptLabels_sv:*)^5.0 
(xptLabels_tlPH:*)^5.0 (xptLabels_sr:*)^5.0 (xptLabels_ca:*)^5.0],
            filterList=@ArrayList[isEmpty=false;size=3],
            filter=null,
            sort=@Sort[<long: "xptLastModifiedDate">!],
            offset=@Integer[0],
            len=@Integer[2147483647],
            supersetMaxDoc=@Integer[6032340],
            flags=@Integer[1],
            timeAllowed=@Long[-1],
            cursorMark=null,
        ],
    ],
    @String[solr.core.xxxbT1.shard1.replica_n11],
]

Here I just do not understand why the len in QueryCommand (The second parameter 
for SolrIndexSearcher.buildTopDocsCollector) is MAX integer 2147483647. Can you 
help me? Thank you!

--
Samuel MA
SF Platform Service
Tel: +86 13818555346


Reply via email to