Thanks Mike.

I think it is something to do with the merge factor.
Modified the code to do optimize in the finally block the following error
message was thrown.

Code Snippet:
        nameWriter.optimize(); // errors here
        nameWriter.close();
        valueWriter.optimize(); //I am using multiple writers
simultaneously. Writing to different directory.
        valueWriter.close()


Index Directory Files:
_1o.cfs
_1p.cfs
_1q.cfs
_1r.cfs
_1s.cfs
_1t.fnm
segments_1
segments.gen
write.lock


Exception in thread "main" java.io.IOException: background merge hit
exception: _1o:c55 _1p:c1 _1q:c1 _1r:c1 _1s:c1 into _1t [optimize]
[mergeDocStores]
        at
org.apache.lucene.index.IndexWriter.optimize(IndexWriter.java:2854)
        at
org.apache.lucene.index.IndexWriter.optimize(IndexWriter.java:2789)
        at
org.apache.lucene.index.IndexWriter.optimize(IndexWriter.java:2759)
        at
com.hli.vis.index.VisualSoftIndexWriter.commitChanges(VSIndexWriter.java:46)
        at com.hli.vis.index.Main.main(Main.java:39)
Caused by: java.io.FileNotFoundException:
/Users/Kumar/Dev/Cust/index/names/_1t.fdx (Too many open files)
        at java.io.RandomAccessFile.open(Native Method)
        at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
        at
org.apache.lucene.store.SimpleFSDirectory$SimpleFSIndexOutput.<init>(SimpleFSDirectory.java:186)
        at
org.apache.lucene.store.NIOFSDirectory.createOutput(NIOFSDirectory.java:76)
        at org.apache.lucene.index.FieldsWriter.<init>(FieldsWriter.java:82)
        at
org.apache.lucene.index.SegmentMerger.mergeFields(SegmentMerger.java:334)
        at
org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:153)
        at
org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:5029)
        at org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:4614)
        at
org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:235)
        at
org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:291)
Java Result: 1


Kumar    _/|\_
www.saisk.com
ku...@saisk.com
"making a profound difference with knowledge and creativity..."


On Thu, Dec 31, 2009 at 6:45 AM, Michael McCandless <
luc...@mikemccandless.com> wrote:

> It sounds like you may be running out of file descriptors -- how many
> segments are in your index?
>
> The reopen logic looks correct (you are closing the old reader).  Is
> there anything else that may be holding files open?
>
> Have you changed any of IW's settings, eg mergeFactor?
>
> Mike
>
> On Wed, Dec 30, 2009 at 3:21 PM, Kumaravel Kandasami
> <kumaravel.kandas...@gmail.com> wrote:
> > I am getting IOException when I am doing a "Real-time" search, i.e. I am
> > creating a Index using the Index Writer and also opening the Index using
> > Index Reader (writer.getReader()) to make sure the document does not
> exist
> > prior adding to the Index file.
> >
> > The code works perfect fine multiple time indexed across couple of GB
> data,
> > however, on a TB it fails with the exception listed below.
> > Any suggestions appreciated. Thanks. Kumar
> >
> > Code Snippet:
> >
> >   IndexReader reader2 = reader.reopen();//get
> >
> >                    if (reader2 != reader) {
> >
> >                        reader.close();
> >                        reader = reader2;
> >                        searcher = new IndexSearcher(reader);
> >                        reader2 = null;
> >                    }
> >
> >
> > Exception:
> >
> > Exception in thread "main" java.io.IOException: directory
> > '/Users/Kumar/Dev/Cust/index/values' exists and is a directory, but
> cannot
> > be listed: list() returned null
> >        at
> org.apache.lucene.store.FSDirectory.listAll(FSDirectory.java:516)
> >        at
> org.apache.lucene.store.FSDirectory.listAll(FSDirectory.java:531)
> >        at
> >
> org.apache.lucene.index.IndexFileDeleter.refresh(IndexFileDeleter.java:307)
> >        at
> >
> org.apache.lucene.index.IndexWriter.doFlushInternal(IndexWriter.java:4300)
> >        at
> > org.apache.lucene.index.IndexWriter.doFlush(IndexWriter.java:4192)
> >        at
> org.apache.lucene.index.IndexWriter.flush(IndexWriter.java:4183)
> >        at
> > org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:470)
> >        at
> > org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:444)
> >        at
> >
> org.apache.lucene.index.DirectoryReader.doReopen(DirectoryReader.java:384)
> >        at
> > org.apache.lucene.index.DirectoryReader.reopen(DirectoryReader.java:348)
> >
> > Kumar    _/|\_
> > www.saisk.com
> > ku...@saisk.com
> > "making a profound difference with knowledge and creativity..."
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-user-h...@lucene.apache.org
>
>

Reply via email to