From 3a0a3228ec9a7ef6d5ff766e0ee0737e547f92a4 Mon Sep 17 00:00:00 2001 From: Stephen Compall Date: Fri, 31 Jul 2020 10:59:39 -0400 Subject: [PATCH] fix null pointer in PortLock#lock (#6941) java.lang.NullPointerException: at com.daml.ports.PortLock$Locked.unlock(PortLock.scala:55) at com.daml.ports.PortLock$.lock(PortLock.scala:41) at com.daml.ports.LockedFreePort$.find(LockedFreePort.scala:15) at com.daml.lf.engine.trigger.TriggerServiceFixture$.$anonfun$withTriggerService$1(TriggerServiceFixture.scala:65) CHANGELOG_BEGIN CHANGELOG_END --- .../scala/com/digitalasset/ports/PortLock.scala | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/libs-scala/ports/src/main/scala/com/digitalasset/ports/PortLock.scala b/libs-scala/ports/src/main/scala/com/digitalasset/ports/PortLock.scala index 57743a1cb0..8ef8129921 100644 --- a/libs-scala/ports/src/main/scala/com/digitalasset/ports/PortLock.scala +++ b/libs-scala/ports/src/main/scala/com/digitalasset/ports/PortLock.scala @@ -33,14 +33,13 @@ object PortLock { val file = new RandomAccessFile(portLockFile.toFile, "rw") val channel = file.getChannel try { - val lock = channel.tryLock() - val locked = new Locked(port, lock, channel, file) - if (lock != null) { - Right(locked) - } else { - locked.unlock() - Left(FailedToLock(port)) - } + Option(channel.tryLock()) + .map(lock => new Locked(port, lock, channel, file)) + .toRight { + channel.close() + file.close() + FailedToLock(port) + } } catch { case _: OverlappingFileLockException => channel.close()