Issue Details (XML | Word | Printable)

Key: JCR-233
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Tobias Bocanegra
Reporter: fabrizio giustina
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
Jackrabbit Content Repository

repository lock file not removed without a clean shutdown

Created: 03/Oct/05 06:47 AM   Updated: 11/Oct/05 09:38 PM
Return to search
Component/s: jackrabbit-core
Affects Version/s: None
Fix Version/s: 1.0

Time Tracking:
Not Specified

File Attachments:
  Size
File Licensed for inclusion in ASF works replock.293087.diff 2005-10-03 05:12 PM Tobias Bocanegra 3 kB
Issue Links:
Reference
 

Resolution Date: 11/Oct/05 09:38 PM


 Description  « Hide
actually when a repository is loaded a ".lock" file is created. This file is removed only after a clean shutdown but, if a jackrabbit instance has been killed, you have to manually delete the file in order to load the repository again, also if there was no live instance of jackrabbit that was using it.

The problem comes from the fact that the simple presence of the .lock file is used to indicate a live instance.
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
- when a new instance is started try to delete an eventual .lock file. Only if the file can't be deleted because in use assume that another jackrabbit instance is running.


 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Edgar Poce added a comment - 03/Oct/05 08:22 AM
> The problem comes from the fact that the simple presence of the .lock file is used to indicate a live instance.

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.

Tobias Bocanegra added a comment - 03/Oct/05 03:30 PM
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.


Marcel Reutegger added a comment - 03/Oct/05 04:43 PM
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?

Marcel Reutegger added a comment - 03/Oct/05 04:51 PM
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.

Tobias Bocanegra added a comment - 03/Oct/05 05:11 PM
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.

Tobias Bocanegra added a comment - 03/Oct/05 05:12 PM
patch for exclusive locking

Tobias Bocanegra added a comment - 11/Oct/05 09:38 PM
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