Identified the problem.

reader.close() was not getting called in a specific logic flow.



Thank You.

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


On Thu, Dec 31, 2009 at 11:11 AM, Kumaravel Kandasami <
kumaravel.kandas...@gmail.com> wrote:

> 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