contrebande-labs opened a new issue, #12307:
URL: https://github.com/apache/lucene/issues/12307

   ### Description
   
   We use IntelliJ to build a fat jar to run on ARM64 cloud VMs with Java 20 on 
Oracle Linux 8.5 to build Lucene BM25+HNSW indices.
   
   Our first run gave us this error message that we fixed by manually 
extracting `lucene-core-9.6.0.jar/META-INF/versions/20/` in the classpath:
   
   ```
   java.lang.LinkageError: MemorySegmentIndexInputProvider is missing in Lucene 
JAR file
        at 
org.apache.lucene.store.MMapDirectory.lookupProvider(MMapDirectory.java:437)
        at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
        at 
org.apache.lucene.store.MMapDirectory.doPrivileged(MMapDirectory.java:395)
        at 
org.apache.lucene.store.MMapDirectory.<clinit>(MMapDirectory.java:448)
        at 
com.example.vertx.oci.lucene.LuceneHNSWIndexVerticle.lambda$initIndex$12(LuceneHNSWIndexVerticle.java:325)
        at io.vertx.lang.rx.DelegatingHandler.handle(DelegatingHandler.java:20)
        at io.vertx.core.impl.ContextBase.lambda$null$0(ContextBase.java:137)
        at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:264)
        at 
io.vertx.core.impl.ContextBase.lambda$executeBlocking$1(ContextBase.java:135)
        at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:1623)
   Caused by: java.lang.ClassNotFoundException: 
org.apache.lucene.store.MemorySegmentIndexInputProvider
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at 
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:496)
        at java.base/java.lang.Class.forName(Class.java:475)
        at 
java.base/java.lang.invoke.MethodHandles$Lookup.findClass(MethodHandles.java:2785)
        at 
org.apache.lucene.store.MMapDirectory.lookupProvider(MMapDirectory.java:422)
        ... 13 more
   ```
   
   But then, 237GB RAM, 35 million documents and 2hrs20mins later, we got the 
following and couldn't find how to fix it since 
`org.apache.lucene.codecs.lucene90.Lucene90PostingsFormat` is already in the 
classpath:
   
   ```
   Exception in thread "Lucene Merge Thread #0" 
org.apache.lucene.index.MergePolicy$MergeException: 
java.lang.IllegalArgumentException: An SPI class of type 
org.apache.lucene.codecs.PostingsFormat with name 'Lucene90' does not exist.  
You need to add the corresponding JAR file supporting this SPI to your 
classpath.  The current classpath supports the following names: [completion, 
Completion84, Completion90]
        at 
org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:735)
        at 
org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:727)
   Caused by: java.lang.IllegalArgumentException: An SPI class of type 
org.apache.lucene.codecs.PostingsFormat with name 'Lucene90' does not exist.  
You need to add the corresponding JAR file supporting this SPI to your 
classpath.  The current classpath supports the following names: [completion, 
Completion84, Completion90]
        at org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:113)
        at 
org.apache.lucene.codecs.PostingsFormat.forName(PostingsFormat.java:111)
        at 
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsReader.<init>(PerFieldPostingsFormat.java:325)
        at 
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat.fieldsProducer(PerFieldPostingsFormat.java:392)
        at 
org.apache.lucene.index.SegmentCoreReaders.<init>(SegmentCoreReaders.java:118)
        at org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:92)
        at 
org.apache.lucene.index.ReadersAndUpdates.getReader(ReadersAndUpdates.java:180)
        at 
org.apache.lucene.index.ReadersAndUpdates.getReaderForMerge(ReadersAndUpdates.java:788)
        at 
org.apache.lucene.index.IndexWriter.lambda$mergeMiddle$21(IndexWriter.java:5079)
        at 
org.apache.lucene.index.MergePolicy$OneMerge.initMergeReaders(MergePolicy.java:444)
        at 
org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:5075)
        at org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:4680)
        at 
org.apache.lucene.index.IndexWriter$IndexWriterMergeSource.merge(IndexWriter.java:6432)
        at 
org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:639)
        at 
org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:700)
   com.example.vertx.oci.lucene.exception.IndexDocumentException: 
org.apache.lucene.store.AlreadyClosedException: this IndexWriter is closed
        at 
com.example.vertx.oci.lucene.LuceneHNSWIndexVerticle.lambda$indexDocument$10(LuceneHNSWIndexVerticle.java:277)
        at io.vertx.lang.rx.DelegatingHandler.handle(DelegatingHandler.java:20)
        at io.vertx.core.impl.ContextBase.lambda$null$0(ContextBase.java:137)
        at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:264)
        at 
io.vertx.core.impl.ContextBase.lambda$executeBlocking$1(ContextBase.java:135)
        at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:1623)
   Caused by: org.apache.lucene.store.AlreadyClosedException: this IndexWriter 
is closed
        at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:908)
        at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:921)
        at 
org.apache.lucene.index.IndexWriter.updateDocuments(IndexWriter.java:1529)
        at 
org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1817)
        at 
org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1470)
        at 
com.example.vertx.oci.lucene.LuceneHNSWIndexVerticle.lambda$indexDocument$10(LuceneHNSWIndexVerticle.java:271)
        ... 9 more
   Caused by: java.lang.IllegalArgumentException: An SPI class of type 
org.apache.lucene.codecs.PostingsFormat with name 'Lucene90' does not exist.  
You need to add the corresponding JAR file supporting this SPI to your 
classpath.  The current classpath supports the following names: [completion, 
Completion84, Completion90]
        at org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:113)
        at 
org.apache.lucene.codecs.PostingsFormat.forName(PostingsFormat.java:111)
        at 
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsReader.<init>(PerFieldPostingsFormat.java:325)
        at 
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat.fieldsProducer(PerFieldPostingsFormat.java:392)
        at 
org.apache.lucene.index.SegmentCoreReaders.<init>(SegmentCoreReaders.java:118)
        at org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:92)
        at 
org.apache.lucene.index.ReadersAndUpdates.getReader(ReadersAndUpdates.java:180)
        at 
org.apache.lucene.index.ReadersAndUpdates.getReaderForMerge(ReadersAndUpdates.java:788)
        at 
org.apache.lucene.index.IndexWriter.lambda$mergeMiddle$21(IndexWriter.java:5079)
        at 
org.apache.lucene.index.MergePolicy$OneMerge.initMergeReaders(MergePolicy.java:444)
        at 
org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:5075)
        at org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:4680)
        at 
org.apache.lucene.index.IndexWriter$IndexWriterMergeSource.merge(IndexWriter.java:6432)
        at 
org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:639)
        at 
org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:700)
   
   ```
   
   Anyone knows how to fix this, especially on the second without a solution? 
We think they are related but can't say for sure.
   
   Thanks.
   
   ### Version and environment details
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to