You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "Robert Muir (Jira)" <ji...@apache.org> on 2021/04/13 12:42:00 UTC
[jira] [Commented] (LUCENE-9927) Configurable BKDWriter maximum
heap size
[ https://issues.apache.org/jira/browse/LUCENE-9927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17320144#comment-17320144 ]
Robert Muir commented on LUCENE-9927:
-------------------------------------
I think it would be better to use the bugfixed version in solr. These codec apis have a high, long-term backwards compatibility cost: we shouldn't add such configuration knobs.
> Configurable BKDWriter maximum heap size
> ----------------------------------------
>
> Key: LUCENE-9927
> URL: https://issues.apache.org/jira/browse/LUCENE-9927
> Project: Lucene - Core
> Issue Type: Improvement
> Reporter: Andras Salamon
> Priority: Major
>
> With Lucene's default codec, when writing dimensional points, we only give {{BKDWriter}} 16 MB heap to use for sorting. If we reach this limit the codec will change to [OfflinePointWriter|https://github.com/apache/lucene/blob/main/lucene/core/src/java/org/apache/lucene/util/bkd/OfflinePointWriter.java].
> This is specially bad for Solr versions not containing SOLR-14242, because we get the following error:
> {noformat}
> Caused by: java.lang.IllegalStateException: this writer hit an unrecoverable error; cannot complete forceMerge
> at org.apache.lucene.index.IndexWriter.forceMerge(IndexWriter.java:1998)
> at org.apache.lucene.index.IndexWriter.forceMerge(IndexWriter.java:1940)
> at org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:662)
> at org.apache.solr.update.processor.RunUpdateProcessor.processCommit(RunUpdateProcessorFactory.java:102)
> at org.apache.solr.update.processor.UpdateRequestProcessor.processCommit(UpdateRequestProcessor.java:68)
> at org.apache.solr.update.processor.UpdateRequestProcessor.processCommit(UpdateRequestProcessor.java:68)
> at org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalCommit(DistributedUpdateProcessor.java:1079)
> at org.apache.solr.update.processor.DistributedUpdateProcessor.processCommit(DistributedUpdateProcessor.java:1066)
> at org.apache.solr.update.processor.LogUpdateProcessorFactory$LogUpdateProcessor.processCommit(LogUpdateProcessorFactory.java:160)
> at org.apache.solr.handler.RequestHandlerUtils.handleCommit(RequestHandlerUtils.java:69)
> at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:72)
> at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:211)
> ... 15 more
> Caused by: java.lang.UnsupportedOperationException
> at org.apache.solr.store.hdfs.HdfsDirectory.createTempOutput(HdfsDirectory.java:119)
> at org.apache.lucene.store.FilterDirectory.createTempOutput(FilterDirectory.java:79)
> at org.apache.lucene.store.FilterDirectory.createTempOutput(FilterDirectory.java:79)
> at org.apache.lucene.store.TrackingDirectoryWrapper.createTempOutput(TrackingDirectoryWrapper.java:51)
> at org.apache.lucene.store.TrackingDirectoryWrapper.createTempOutput(TrackingDirectoryWrapper.java:51)
> at org.apache.lucene.util.bkd.OfflinePointWriter.<init>(OfflinePointWriter.java:45)
> at org.apache.lucene.util.bkd.BKDWriter.initPointWriter(BKDWriter.java:223)
> at org.apache.lucene.util.bkd.BKDWriter.add(BKDWriter.java:241)
> at org.apache.lucene.codecs.lucene60.Lucene60PointsWriter$1.visit(Lucene60PointsWriter.java:123)
> at org.apache.lucene.codecs.PointsWriter$1$1$1.visit(PointsWriter.java:118)
> at org.apache.lucene.util.bkd.BKDReader.visitCompressedDocValues(BKDReader.java:735)
> at org.apache.lucene.util.bkd.BKDReader.visitDocValuesWithCardinality(BKDReader.java:684)
> at org.apache.lucene.util.bkd.BKDReader.visitDocValues(BKDReader.java:590)
> at org.apache.lucene.util.bkd.BKDReader.intersect(BKDReader.java:790)
> at org.apache.lucene.util.bkd.BKDReader.intersect(BKDReader.java:813)
> at org.apache.lucene.util.bkd.BKDReader.intersect(BKDReader.java:813)
> at org.apache.lucene.util.bkd.BKDReader.intersect(BKDReader.java:813)
> at org.apache.lucene.util.bkd.BKDReader.intersect(BKDReader.java:813)
> at org.apache.lucene.util.bkd.BKDReader.intersect(BKDReader.java:813)
> at org.apache.lucene.util.bkd.BKDReader.intersect(BKDReader.java:813)
> at org.apache.lucene.util.bkd.BKDReader.intersect(BKDReader.java:813)
> at org.apache.lucene.util.bkd.BKDReader.intersect(BKDReader.java:813)
> at org.apache.lucene.util.bkd.BKDReader.intersect(BKDReader.java:506)
> at org.apache.lucene.codecs.PointsWriter$1$1.intersect(PointsWriter.java:106)
> at org.apache.lucene.codecs.lucene60.Lucene60PointsWriter.writeField(Lucene60PointsWriter.java:116)
> at org.apache.lucene.codecs.PointsWriter.mergeOneField(PointsWriter.java:63)
> at org.apache.lucene.codecs.lucene60.Lucene60PointsWriter.merge(Lucene60PointsWriter.java:227)
> at org.apache.lucene.index.SegmentMerger.mergePoints(SegmentMerger.java:206)
> at org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:164)
> at org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:4467)
> at org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:4059)
> at org.apache.solr.update.SolrIndexWriter.merge(SolrIndexWriter.java:201)
> at org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:625)
> at org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:662){noformat}
> It would be great to make this 16MB value configurable.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org