|
i also opt for an exclusive file lock mechanism. i already have a patched version running...i will provide the patch shortly
btw: you can use process explorer (http://www.sysinternals.com/Utilities/ProcessExplorer.html) to search the process that has locked the file and terminate it (like fuser on unix). sometimes it was even explorer.exe that had the lock. I also like the approach to use an exclusive file lock.
As a consequence it seems that creating and removing the .lock file is of no use anymore, because it does not actually indicate whether an instance is really using the lock file. The primary indicator is the presence on an exclusive lock on a well known file. So, how about initially creating the lock file if it is not there and then use only file locking to prevent multiple instances running on the same repository data? Edgar wrote:
> Clean shutdowns are very important, actually I turned my repository inconsistent a couple of times killing the jvm process. IMO the repository should be able to handle such process kills, if it is not we should fix it. There are far too many components involved, which are not 100% reliable. JVMs will always crash, at least the ones that are available right now. So there is no way we can get around this. i though of creating and deleting the .lock file as before, but using an exclusive filelock for the actual locking. so if a starting repository detetcs an existing .lock file, it can issue a warning, that the repository was not shutdown properly.
patch for exclusive locking
fixed as proposed.
Author: tripod Date: Tue Oct 11 05:37:32 2005 New Revision: 312865 URL: http://svn.apache.org/viewcvs?rev=312865&view=rev Log: JCR-233 repository lock file not removed without a clean shutdown Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/RepositoryImpl.java |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Not only a live instance ... The idea was no only to prevent 2 jackrabbit instances running but also to let the user know that the repository wasn't shutdown propertly. Clean shutdowns are very important, actually I turned my repository inconsistent a couple of times killing the jvm process.
> I suggest replacing this behavior using this method (used for example by eclipse when opening workspaces):
> - when an instance is loaded create a ".lock" file and open it with exclusive access
I'm not sure but I think this was the policy for the index lock some months ago, and I'm happy it changed because a few times I had to reboot XP when I killed the jvm process. I couldn't remove the lock, not even from the explorer. So, I don't think it's a good idea to change the current behaviour.