/**
* transient object representing a file lock
- *
- *
+ * This lock should hold for all processes interacting in a session.
+ * TODO: currently implemented for local filesystem style locking - need a fallback mechanism for systems without file locks.
* @author jimp
*
*/
}
lock = (rafile=new RandomAccessFile(lockfile,"rw")).getChannel().tryLock();
+ if (lock==null || !lock.isValid())
+ // failed to get lock. Close the file channel
+ rafile.getChannel().close();
} catch (FileNotFoundException e) {
System.err.println("Error! Couldn't create a lockfile at "
+ lockfile.getAbsolutePath());
}
public void release() {
try {
+ // TODO: verify that channel.close should be called after release() for rigourous locking.
if (lock!=null && lock.isValid())
lock.release();
if (rafile!=null && rafile.getChannel().isOpen())