diff --git a/VERSION b/VERSION index 11d9efa3..1802e771 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -5.8.0 +5.8.1 diff --git a/model/src/main/scala/org/gorpipe/model/gor/iterators/RefSeqFromChromSeq.scala b/model/src/main/scala/org/gorpipe/model/gor/iterators/RefSeqFromChromSeq.scala index d548a9f6..bf7158f9 100644 --- a/model/src/main/scala/org/gorpipe/model/gor/iterators/RefSeqFromChromSeq.scala +++ b/model/src/main/scala/org/gorpipe/model/gor/iterators/RefSeqFromChromSeq.scala @@ -36,8 +36,12 @@ import org.slf4j.{Logger, LoggerFactory} import java.nio.file.{Files, Path, Paths} +object RefSeqFromChromSeq { + var downloadTriggered : util.Map[String, java.lang.Boolean] = + new java.util.concurrent.ConcurrentHashMap[String, java.lang.Boolean] +} + class RefSeqFromChromSeq(ipath : String, fileReader : FileReader) extends RefSeq { - protected var download_triggered = false private val GOR_REFSEQ_CACHE_FOLDER = System.getProperty("gor.refseq.cache.folder") private val GOR_REFSEQ_CACHE_DOWNLOAD = Option(System.getProperty("gor.refseq.cache.download", "true")).exists(_.toBoolean) @@ -66,8 +70,8 @@ class RefSeqFromChromSeq(ipath : String, fileReader : FileReader) extends RefSeq if (Files.exists(fullCachePath)) { log.debug("Using cached reference build {}", fullCachePath.toString) return fullCachePath.toString - } else if (GOR_REFSEQ_CACHE_DOWNLOAD && !download_triggered) { - download_triggered = true // Only trigger download once per client + } else if (GOR_REFSEQ_CACHE_DOWNLOAD && (RefSeqFromChromSeq.downloadTriggered.putIfAbsent(fullRefPath.toString, true) == null)) { + // Only trigger download once per client triggerRefSeqDownload(fullRefPath, fullCachePath) } } diff --git a/model/src/main/scala/org/gorpipe/model/gor/iterators/RefSeqFromConfigFactory.scala b/model/src/main/scala/org/gorpipe/model/gor/iterators/RefSeqFromConfigFactory.scala index 600e2a8b..d34c5412 100644 --- a/model/src/main/scala/org/gorpipe/model/gor/iterators/RefSeqFromConfigFactory.scala +++ b/model/src/main/scala/org/gorpipe/model/gor/iterators/RefSeqFromConfigFactory.scala @@ -24,19 +24,13 @@ package org.gorpipe.model.gor.iterators import org.gorpipe.gor.model.FileReader -import java.util -import java.util.Collections - class RefSeqFromConfigFactory(path: String, reader: FileReader) extends RefSeqFactory { - var refSeqMap = Collections.synchronizedMap(new util.HashMap[String, RefSeq]()) override def create(): RefSeq = { - refSeqMap.computeIfAbsent(path, _ => { - new RefSeqFromChromSeq(path, reader)}) + new RefSeqFromChromSeq(path, reader) } def create(altPath: String): RefSeq = { - refSeqMap.computeIfAbsent(altPath, _ => { - new RefSeqFromChromSeq(altPath, reader)}) + new RefSeqFromChromSeq(altPath, reader) } } diff --git a/model/src/test/java/org/gorpipe/model/gor/iterators/UTestRefSeqFromConfig.java b/model/src/test/java/org/gorpipe/model/gor/iterators/UTestRefSeqFromChromSeq.java similarity index 98% rename from model/src/test/java/org/gorpipe/model/gor/iterators/UTestRefSeqFromConfig.java rename to model/src/test/java/org/gorpipe/model/gor/iterators/UTestRefSeqFromChromSeq.java index 35b783b4..8f094845 100644 --- a/model/src/test/java/org/gorpipe/model/gor/iterators/UTestRefSeqFromConfig.java +++ b/model/src/test/java/org/gorpipe/model/gor/iterators/UTestRefSeqFromChromSeq.java @@ -13,7 +13,7 @@ import java.nio.file.Files; import java.nio.file.Path; -public class UTestRefSeqFromConfig { +public class UTestRefSeqFromChromSeq { @Rule public final ProvideSystemProperty cacheFolder @@ -121,8 +121,7 @@ public void testGetRefbaseFromCache() throws InterruptedException { RefSeqFromChromSeq refseq = new RefSeqFromChromSeq("../tests/data/ref_mini/chromSeq", new DriverBackedFileReader("")); - refseq.download_triggered_$eq(false); - + RefSeqFromChromSeq.downloadTriggered().clear(); Assert.assertEquals('C', refseq.getBase("chr1", 101000));