lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Torben Riis <...@multi-support.com>
Subject Re: ArrayIndexOutOfBoundsException during System.arraycopy in BKDWriter
Date Tue, 07 May 2019 10:04:53 GMT
Just for keeping the mailing list up to date. I have created a JIRA issue.

https://issues.apache.org/jira/browse/LUCENE-8795



Fra: Torben Riis <tri@multi-support.com>
Sendt: 7. maj 2019 11:37
Til: Michael McCandless <lucene@mikemccandless.com>; Lucene Users <java-user@lucene.apache.org>
Emne: SV: ArrayIndexOutOfBoundsException during System.arraycopy in BKDWriter

Hi,

Sorry for the late answer (vacation).

Indeed, we very soon realized that the -Xint argument was a quite naive choice. We have changed
the arguments to specific excludes for every class / inner classes in the bkd package. Moreover,
we have also made a copy of the whole installation in production, and added the opposite arguments
(enforce jit optimizations for the specific classes). First we will try with optLevel=hot,
but if this doesn’t show anything we will afterwards try with veryHot and scorching. I’ll
post the results of our findings on the upcoming JIRA issue.

Unfortunately it’s not possible to run OpenJDK on the IBM i platform, but it is worth mentioning
that our product is a standard product, which typically run on the Windows or Linux platform
using AdoptOpenJDK. Currently we have a couple of hundred installations running out there
on these platforms, and without any problems. But on the IBM I platform with J9 we sometimes
see this exception.

On production we have disabled jit optimization for the following classes
-Xjit:verbose,exclude={org/apache/lucene/util/bkd/BKDWriter.*|org/apache/lucene/util/bkd/BKDReader.*|org/apache/lucene/util/bkd/BKDReader$IndexTree.*|org/apache/lucene/util/bkd/BKDReader$IntersectState.*|org/apache/lucene/util/bkd/BKDReader$LegacyIndexTree.*|org/apache/lucene/util/bkd/BKDReader$PackedIndexTree.*|org/apache/lucene/util/bkd/BKDWriter.*|org/apache/lucene/util/bkd/BKDWriter$OneDimensionBKDWriter.*|org/apache/lucene/util/bkd/BKDWriter$MergeReader.*|org/apache/lucene/util/bkd/BKDWriter$BKDMergeQueue.*|org/apache/lucene/util/bkd/BKDWriter$PathSlice.*|org/apache/lucene/util/bkd/DocIdsWriter.*|org/apache/lucene/util/bkd/HeapPointReader.*|org/apache/lucene/util/bkd/HeapPointWriter.*|org/apache/lucene/util/bkd/MutablePointsReaderUtils.*|org/apache/lucene/util/bkd/OfflinePointReader.*|org/apache/lucene/util/bkd/OfflinePointWriter.*|org/apache/lucene/util/bkd/PointReader.*|org/apache/lucene/util/bkd/PointWriter.*},vlog=/home/nextown/multi-support/next/logs/jit


On the copy of production we have enforced jit optimization for the following classes
-Xjit:{org/apache/lucene/util/bkd/BKDWriter.*|org/apache/lucene/util/bkd/BKDReader.*|org/apache/lucene/util/bkd/BKDReader$IndexTree.*|org/apache/lucene/util/bkd/BKDReader$IntersectState.*|org/apache/lucene/util/bkd/BKDReader$LegacyIndexTree.*|org/apache/lucene/util/bkd/BKDReader$PackedIndexTree.*|org/apache/lucene/util/bkd/BKDWriter.*|org/apache/lucene/util/bkd/BKDWriter$OneDimensionBKDWriter.*|org/apache/lucene/util/bkd/BKDWriter$MergeReader.*|org/apache/lucene/util/bkd/BKDWriter$BKDMergeQueue.*|org/apache/lucene/util/bkd/BKDWriter$PathSlice.*|org/apache/lucene/util/bkd/DocIdsWriter.*|org/apache/lucene/util/bkd/HeapPointReader.*|org/apache/lucene/util/bkd/HeapPointWriter.*|org/apache/lucene/util/bkd/MutablePointsReaderUtils.*|org/apache/lucene/util/bkd/OfflinePointReader.*|org/apache/lucene/util/bkd/OfflinePointWriter.*|org/apache/lucene/util/bkd/PointReader.*|org/apache/lucene/util/bkd/PointWriter.*}(count=0,optlevel=hot)

I’ll create a JIRA task right away.



Med venlig hilsen

Torben Riis

—————————————————————————
Torben Riis
Lead Architect

[cid:image001.png@01D504C9.2891A970]
Multi Support · Making good business run better
+45 96 600 600 · www.multi-support.com<http://www.multi-support.com>



Fra: Michael McCandless <lucene@mikemccandless.com<mailto:lucene@mikemccandless.com>>
Sendt: 3. maj 2019 10:05
Til: Lucene Users <java-user@lucene.apache.org<mailto:java-user@lucene.apache.org>>;
Torben Riis <tri@multi-support.com<mailto:tri@multi-support.com>>
Emne: Re: ArrayIndexOutOfBoundsException during System.arraycopy in BKDWriter

Note that  the -Xint flag will make your code run tremendously more slowly!  Likely to the
point of not really being usable.  But it'd be interesting to see if that side-steps the bug.

Is it possible to test with OpenJDK as well?

The BKDWriter code is quite complex, so it is also possible there is a Lucene bug at work.

Can you open an issue in Lucene's jira and we can iterate there?

Thanks,

Mike McCandless

http://blog.mikemccandless.com


On Wed, May 1, 2019 at 9:34 AM Torben Riis <tri@multi-support.com<mailto:tri@multi-support.com>>
wrote:
Hi,

I’m a bit stuck here and needs a clue or two in order to continue our investigations. Hope
that someone can help. :)

Periodically, around once a month, we get the below ArrayIndexOutOfBoundsException on our
system. We use multiple indexes and the error can originate from any of them, but the error
always occurs in line 1217 in BKDWriter (during a System.arraycopy).

We found a couple of issues on the net regarding JIT optimization problem related to J9, but
they all looks like they have been resolved and cannot be reproduced anymore. But nevertheless,
we have just added the -Xint flag (disable JIT compiler) in order to see whether this has
any impact. Unfortunately we do not have the result of this yet, but I’ll of course post
it when it is known.

Are there any of you clever guys out there, that has some good ideas further investigations?
Or have seen such issue before?

We are using Lucene 6.6.0 and runs on IBM J9 on the IBM I platform.


Java version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 8.0.5.25 - pap6480sr5fp25-20181030_01(SR5 FP25))
IBM J9 VM (build 2.9, JRE 1.8.0 OS/400 ppc64-64-Bit Compressed References 20181029_400846
(JIT enabled, AOT enabled)
OpenJ9   - c5c78da
OMR      - 3d5ac33
IBM      - 8c1bdc2)
JCL - 20181022_01 based on Oracle jdk8u191-b26
NOTICE: If no version information is found above, this could indicate a corrupted Java installation!
Java detected was: /QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit/bin/java
-Dmultiarchive.basepath=/home/NEXTOWN/Multi-Support/Next -Xms128m -Xmx2048m


Stacktrace
Exception in thread "Lucene Merge Thread #0" 2019-05-01T06:10:07.970 CEST [Lucene Merge Thread
#0] org.apache.lucene.index.MergePolicy$MergeException: java.lang.ArrayIndexOutOfBoundsException
            at org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:703)
            at org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:683)
Caused by: 2019-05-01T06:10:07.971 CEST [Lucene Merge Thread #0] java.lang.ArrayIndexOutOfBoundsException
            at org.apache.lucene.util.bkd.BKDWriter.recursePackIndex(BKDWriter.java:1217)
            at org.apache.lucene.util.bkd.BKDWriter.recursePackIndex(BKDWriter.java:1197)
            at org.apache.lucene.util.bkd.BKDWriter.packIndex(BKDWriter.java:1078)
            at org.apache.lucene.util.bkd.BKDWriter.writeIndex(BKDWriter.java:1245)
            at org.apache.lucene.util.bkd.BKDWriter.access$600(BKDWriter.java:82)
            at org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.finish(BKDWriter.java:648)
            at org.apache.lucene.util.bkd.BKDWriter.merge(BKDWriter.java:560)
            at org.apache.lucene.codecs.lucene60.Lucene60PointsWriter.merge(Lucene60PointsWriter.java:212)
            at org.apache.lucene.index.SegmentMerger.mergePoints(SegmentMerger.java:173)
            at org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:122)
            at org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:4356)
            at org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:3931)
            at org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:624)
            at org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:661)
Exception in thread "Lucene Merge Thread #0" 2019-05-01T06:10:08.075 CEST [Lucene Merge Thread
#0] org.apache.lucene.index.MergePolicy$MergeException: java.lang.ArrayIndexOutOfBoundsException
            at org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:703)
            at org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:683)
Caused by: 2019-05-01T06:10:08.076 CEST [Lucene Merge Thread #0] java.lang.ArrayIndexOutOfBoundsException
            at org.apache.lucene.util.bkd.BKDWriter.recursePackIndex(BKDWriter.java:1217)
            at org.apache.lucene.util.bkd.BKDWriter.recursePackIndex(BKDWriter.java:1197)
            at org.apache.lucene.util.bkd.BKDWriter.packIndex(BKDWriter.java:1078)
            at org.apache.lucene.util.bkd.BKDWriter.writeIndex(BKDWriter.java:1245)
            at org.apache.lucene.util.bkd.BKDWriter.access$600(BKDWriter.java:82)
            at org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.finish(BKDWriter.java:648)
            at org.apache.lucene.util.bkd.BKDWriter.merge(BKDWriter.java:560)
            at org.apache.lucene.codecs.lucene60.Lucene60PointsWriter.merge(Lucene60PointsWriter.java:212)
            at org.apache.lucene.index.SegmentMerger.mergePoints(SegmentMerger.java:173)
            at org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:122)
            at org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:4356)
            at org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:3931)
            at org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:624)
            at org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler


BKDWriter.java



Kind regards

Torben Riis

—————————————————————————
Torben Riis
Lead Architect


Multi Support · Making good business run better
+45 96 600 600 · www.multi-support.com<http://www.multi-support.com>




Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message