removed possible threading error

git-svn-id: https://svn.apache.org/repos/asf/incubator/activemq/trunk@356776 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
James Strachan 2005-12-14 13:45:12 +00:00
parent 7316506346
commit f25cc68fb1
1 changed files with 13 additions and 12 deletions

View File

@ -66,15 +66,15 @@ final public class ControlFile implements Disposable {
* @throws IOException
*/
public void lock() throws IOException {
if( lock==null ) {
Set set = getVmLockSet();
synchronized(set) {
if( !set.add(canonicalPath) ) {
synchronized (set) {
if (lock == null) {
if (!set.add(canonicalPath)) {
throw new IOException("Journal is already opened by this application.");
}
lock = channel.tryLock();
if( lock ==null ) {
if (lock == null) {
set.remove(canonicalPath);
throw new IOException("Journal is already opened by another application");
}
@ -84,15 +84,16 @@ final public class ControlFile implements Disposable {
/**
* Un locks the control file.
*
* @throws IOException
*/
public void unlock() throws IOException {
if( lock != null ) {
Set set = getVmLockSet();
synchronized(set) {
lock.release();
lock=null;
synchronized (set) {
if (lock != null) {
set.remove(canonicalPath);
lock.release();
lock = null;
}
}
}