Skip to content

Commit b1f559e

Browse files
committed
fix(ENGKNOW-2956): Fix threading issues refbases.
1 parent 1865705 commit b1f559e

2 files changed

Lines changed: 10 additions & 11 deletions

File tree

model/src/main/scala/org/gorpipe/model/gor/iterators/RefSeqFromChromSeq.scala

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,14 @@ import org.gorpipe.gor.util.DataUtil
3535
import org.slf4j.{Logger, LoggerFactory}
3636

3737
import java.nio.file.{Files, Path, Paths}
38+
import scala.collection.mutable
39+
40+
object RefSeqFromConfig {
41+
var downloadTriggered : util.Map[String, java.lang.Boolean] =
42+
new java.util.concurrent.ConcurrentHashMap[String, java.lang.Boolean]
43+
}
3844

3945
class RefSeqFromChromSeq(ipath : String, fileReader : FileReader) extends RefSeq {
40-
protected var download_triggered = false
4146
private val GOR_REFSEQ_CACHE_FOLDER = System.getProperty("gor.refseq.cache.folder")
4247
private val GOR_REFSEQ_CACHE_DOWNLOAD = Option(System.getProperty("gor.refseq.cache.download", "true")).exists(_.toBoolean)
4348

@@ -66,8 +71,8 @@ class RefSeqFromChromSeq(ipath : String, fileReader : FileReader) extends RefSeq
6671
if (Files.exists(fullCachePath)) {
6772
log.debug("Using cached reference build {}", fullCachePath.toString)
6873
return fullCachePath.toString
69-
} else if (GOR_REFSEQ_CACHE_DOWNLOAD && !download_triggered) {
70-
download_triggered = true // Only trigger download once per client
74+
} else if (GOR_REFSEQ_CACHE_DOWNLOAD && (RefSeqFromConfig.downloadTriggered.putIfAbsent(fullRefPath.toString, true) == null)) {
75+
// Only trigger download once per client
7176
triggerRefSeqDownload(fullRefPath, fullCachePath)
7277
}
7378
}

model/src/main/scala/org/gorpipe/model/gor/iterators/RefSeqFromConfigFactory.scala

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,13 @@ package org.gorpipe.model.gor.iterators
2424

2525
import org.gorpipe.gor.model.FileReader
2626

27-
import java.util
28-
import java.util.Collections
29-
3027
class RefSeqFromConfigFactory(path: String, reader: FileReader) extends RefSeqFactory {
31-
var refSeqMap = Collections.synchronizedMap(new util.HashMap[String, RefSeq]())
3228

3329
override def create(): RefSeq = {
34-
refSeqMap.computeIfAbsent(path, _ => {
35-
new RefSeqFromChromSeq(path, reader)})
30+
new RefSeqFromChromSeq(path, reader)
3631
}
3732

3833
def create(altPath: String): RefSeq = {
39-
refSeqMap.computeIfAbsent(altPath, _ => {
40-
new RefSeqFromChromSeq(altPath, reader)})
34+
new RefSeqFromChromSeq(altPath, reader)
4135
}
4236
}

0 commit comments

Comments
 (0)