in protocol/src/main/scala/org/jetbrains/plugins/scala/indices/protocol/sbt/Locking.scala [27:43]
def lock(lockFile: Path)(log: Logger = noopLogger): FileLock = {
if (Files.exists(lockFile.getParent) || mkdirs(lockFile.getParent)) {
val raf = new RandomAccessFile(lockFile.toFile, "rw")
try {
log(s"Acquiring lock on file $lockFile ...")
val lock = raf.getChannel.lock()
locks.put(lockFile, LockData(raf, lock))
lock
}
catch {
case e: IOException =>
raf.close()
throw e
}
} else throw new RuntimeException("Unable to create lock file.")
}