From 2ac4e833918fdd588e00c2e55898950814b064cb Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Fri, 4 Mar 2016 00:48:48 +0100 Subject: [PATCH] Remove unnecessary read-lock The corresponding files are atomically moved at their places once fully downloaded, no need for locks here. --- cache/src/main/scala/coursier/Cache.scala | 48 ++++++++--------------- 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/cache/src/main/scala/coursier/Cache.scala b/cache/src/main/scala/coursier/Cache.scala index b23c29038..dd8d1cbb3 100644 --- a/cache/src/main/scala/coursier/Cache.scala +++ b/cache/src/main/scala/coursier/Cache.scala @@ -483,42 +483,26 @@ object Cache { FileError.ChecksumFormatError(sumType, sumFile).left case Some(sum) => - val f = new File(artifact0.url) val md = MessageDigest.getInstance(sumType) + + val f = new File(artifact0.url) val is = new FileInputStream(f) - val res = try { - var lock: FileLock = null - try { - lock = is.getChannel.tryLock(0L, Long.MaxValue, true) - if (lock == null) - FileError.Locked(f).left - else { - withContent(is, md.update(_, 0, _)) - ().right - } - } - catch { - case e: OverlappingFileLockException => - FileError.Locked(f).left - } - finally if (lock != null) lock.release() - } finally is.close() + try withContent(is, md.update(_, 0, _)) + finally is.close() - res.flatMap { _ => - val digest = md.digest() - val calculatedSum = new BigInteger(1, digest) + val digest = md.digest() + val calculatedSum = new BigInteger(1, digest) - if (sum == calculatedSum) - ().right - else - FileError.WrongChecksum( - sumType, - calculatedSum.toString(16), - sum.toString(16), - artifact0.url, - sumFile - ).left - } + if (sum == calculatedSum) + ().right + else + FileError.WrongChecksum( + sumType, + calculatedSum.toString(16), + sum.toString(16), + artifact0.url, + sumFile + ).left } }