If all segments were flushed to the disk (no adds since the last time
the index writer was opened), then it seems like the index should be
fine.

The big question I have is what happens when there are in-memory
segments in the case of an OOM exception during an optimize?  Is data
loss possible?

-Yonik


On 8/1/05, Chris Hostetter <[EMAIL PROTECTED]> wrote:
> 
> If i remember correctly, what you'll find when you remove the lock file is
> that your index is still usable, and from the perspective of new
> IndexWriter/IndexReaders it's in the same state it was prior to the call
> to optimize, but from the perspective of an external observer, the index
> directory will contain a bunch of garbage files from the aborted optimize.
> 
> At my work, we've taken the "safe" attitude that if you get an OOM
> exception, you should assume your index is corrupted, and rebuild from
> scratch for safety -- but i think it's safe to cleanup up the garbage
> files manually.
> 
> which brings up something i ment to ask a while back:  Has anyone written
> any index cleaning code?  that locks an index (using the public API) and
> then inspects the file (using the API, or using low level knowledge of hte
> file structure) to generate a list of 'garbage' files in the index
> directory that should be safely deletable?
> 
> (I considered writing this a few months ago, but then our "play it safe,
> treat it as corrupt" policy came out, and it wasn't all that neccessary
> for me)
> 
> It seems like it might be a handy addition to the sandbox.
> 
> 
> : Date: Sun, 31 Jul 2005 23:20:36 -0400
> : From: Robert Schultz <[EMAIL PROTECTED]>
> : Reply-To: java-user@lucene.apache.org
> : To: java-user@lucene.apache.org
> : Subject: Any problems with a failed IndexWriter optimize call?
> :
> : Hello! I am using Lucene 1.4.3
> :
> : I'm building a Lucene index, that will have about 25 million documents
> : when it is done.
> : I'm adding 250,000 at a time.
> :
> : Currently there is about 1.2Million in there, and I ran into a problem.
> : After I had added a batch of 250,000 I go a 'java.lang.outOfMemory'
> : threw by writer.optimize(); (a standard IndexWriter)
> :
> : The exception caused my program to quit out, and it didn't call
> : 'writer.close();'
> :
> : First, with it dying in the middle of an .optimize() is there any chance
> : my index is corrupted?
> :
> : Second, I know I can remove the /tmp/lucene*.lock file to remove the
> : lock in order to add more, but is it safe to do that?
> :
> : I've since figured out that I can pass -Xmx to the 'java' program in
> : order to increase the maximum amount of RAM.
> : It was using the default of 64M, I plan on increasing that to 175M to
> : start with.
> : That should solve the memory problems (I can allocate more if necessary
> : down the line).
> :
> : Lastly, when I go back, open it again, and add another 250,000 and then
> : call optimize again, will a failed previous optimize hurt the index at all?
> :
> :
> :
> : ---------------------------------------------------------------------
> : To unsubscribe, e-mail: [EMAIL PROTECTED]
> : For additional commands, e-mail: [EMAIL PROTECTED]
> :
> 
> 
> 
> -Hoss
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to