lucene file locking question

2004-11-11 Thread John Wang
Hi folks:

  My application builds a super-index around the lucene index,
e.g. stores some additional information outside of lucene.

   I am using my own locking outside of the lucene index via
FileLock object in the jdk1.4 nio package.

   My code does the following:

FileLock lock=null;
try{
lock=myLockFileChannel.lock();

indexing into lucene;

indexing additional information;

}

finally{
  try{
  commit lucene index by closing the IndexWriter instance.
  }
  finally{
if (lock!=null){
   lock.release();
}
  }
}


Now here is the weird thing, say I terminate the process in the middle
of indexing, and run the program again, I would get a Lock obtain
time out exception, as long as you delete the stale lock file, the
index remains uncorrupted.

However, if I turn lucene file lock off since I have a lock outside it anyways, 
(by doing: 
static{
System.setProperty(disableLuceneLocks,true);
  }
)

and do the same thing. Instead I get an unrecoverable corrupted index.

Does lucene lock really guarentee index integrity under this kind of
abuse or am I just getting lucky?
If so, can someone shine some light on how?

Thanks in advance

-John

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



Re: lucene file locking question

2004-11-11 Thread yahootintin-lucene
Disabling locking is only recommended for read-only indexes that
aren't being modified.  I think there is a comment in the code
about a good example of this being an index you read off of a
CD-ROM.

--- John Wang [EMAIL PROTECTED] wrote:

 Hi folks:
 
   My application builds a super-index around the lucene
 index,
 e.g. stores some additional information outside of lucene.
 
I am using my own locking outside of the lucene index
 via
 FileLock object in the jdk1.4 nio package.
 
My code does the following:
 
 FileLock lock=null;
 try{
 lock=myLockFileChannel.lock();
 
 indexing into lucene;
 
 indexing additional information;
 
 }
 
 finally{
   try{
   commit lucene index by closing the IndexWriter
 instance.
   }
   finally{
 if (lock!=null){
lock.release();
 }
   }
 }
 
 
 Now here is the weird thing, say I terminate the process in
 the middle
 of indexing, and run the program again, I would get a Lock
 obtain
 time out exception, as long as you delete the stale lock
 file, the
 index remains uncorrupted.
 
 However, if I turn lucene file lock off since I have a lock
 outside it anyways, 
 (by doing: 
 static{
 System.setProperty(disableLuceneLocks,true);
   }
 )
 
 and do the same thing. Instead I get an unrecoverable
 corrupted index.
 
 Does lucene lock really guarentee index integrity under this
 kind of
 abuse or am I just getting lucky?
 If so, can someone shine some light on how?
 
 Thanks in advance
 
 -John
 

-
 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]