I have a search engine based on Lucene 3.0.3 and I can't change the Lucene
version for reasons that are out of scope of this question. Now I have a
requirement to move from Java 6 to Java 8, however when I run the indexing
using Java 8 JVM, I hit "Too many open files issue" as below:

java.io.FileNotFoundException: /myIndex/_27c.fdx (Too many open files)
    at java.io.RandomAccessFile.open0(Native Method)
    at java.io.RandomAccessFile.open(RandomAccessFile.java:333)
    at java.io.RandomAccessFile.<init>(RandomAccessFile.java:257)
    at 
org.apache.lucene.store.SimpleFSDirectory$SimpleFSIndexOutput.<init>(SimpleFSDirectory.java:180)
    at 
org.apache.lucene.store.NIOFSDirectory.createOutput(NIOFSDirectory.java:85)
    at org.apache.lucene.index.FieldsWriter.<init>(FieldsWriter.java:86)
    at 
org.apache.lucene.index.StoredFieldsWriter.initFieldsWriter(StoredFieldsWriter.java:66)
    at 
org.apache.lucene.index.StoredFieldsWriter.finishDocument(StoredFieldsWriter.java:144)
    at 
org.apache.lucene.index.StoredFieldsWriter$PerDoc.finish(StoredFieldsWriter.java:192)
    at 
org.apache.lucene.index.DocumentsWriter$WaitQueue.writeDocument(DocumentsWriter.java:1559)
    at 
org.apache.lucene.index.DocumentsWriter$WaitQueue.add(DocumentsWriter.java:1578)
    at 
org.apache.lucene.index.DocumentsWriter.finishDocument(DocumentsWriter.java:1155)
    at 
org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:832)
    at 
org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:807)
    at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:2155)

The ulimit on my system is 80.000 files and when I run lsof, I get that the
open files belong to the index and they are marked as (deleted) segments. I
am aware that there are tons of questions, answers and blogs about the
Lucene open files issue, however:

   - I've already tried whatever is recommended (review the code looking
   for open IndexWriters, increase ulimit, enable compound mode, decrease the
   number of segments from 10 to 4, review the code for open files) without
   success and
   - The issue didn't appear with Java 6 so I am guessing that the problem
   is in how Java 8 handles files.

Anybody faced this issue with Java 8 before? Any additional idea about how
to further troubleshoot this issue or what could be the cause?

Reply via email to