Skip to content

Commit 5e329d2

Browse files
authored
fix(ENGKNOW-2956): Fix thread error in refbases. (#96)
* feat(ENGKNOW-2956): Allow not quoted file names for rebases_with_build * fix(ENGKNOW-2956): Fix threading issues refbases. * fix(ENGKNOW-2956): Fix threading issues refbases. * fix(ENGKNOW-2956): Fix threading issues refbases.
1 parent 10cc88b commit 5e329d2

File tree

4 files changed

+12
-15
lines changed

4 files changed

+12
-15
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5.8.0
1+
5.8.1

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,12 @@ import org.slf4j.{Logger, LoggerFactory}
3636

3737
import java.nio.file.{Files, Path, Paths}
3838

39+
object RefSeqFromChromSeq {
40+
var downloadTriggered : util.Map[String, java.lang.Boolean] =
41+
new java.util.concurrent.ConcurrentHashMap[String, java.lang.Boolean]
42+
}
43+
3944
class RefSeqFromChromSeq(ipath : String, fileReader : FileReader) extends RefSeq {
40-
protected var download_triggered = false
4145
private val GOR_REFSEQ_CACHE_FOLDER = System.getProperty("gor.refseq.cache.folder")
4246
private val GOR_REFSEQ_CACHE_DOWNLOAD = Option(System.getProperty("gor.refseq.cache.download", "true")).exists(_.toBoolean)
4347

@@ -66,8 +70,8 @@ class RefSeqFromChromSeq(ipath : String, fileReader : FileReader) extends RefSeq
6670
if (Files.exists(fullCachePath)) {
6771
log.debug("Using cached reference build {}", fullCachePath.toString)
6872
return fullCachePath.toString
69-
} else if (GOR_REFSEQ_CACHE_DOWNLOAD && !download_triggered) {
70-
download_triggered = true // Only trigger download once per client
73+
} else if (GOR_REFSEQ_CACHE_DOWNLOAD && (RefSeqFromChromSeq.downloadTriggered.putIfAbsent(fullRefPath.toString, true) == null)) {
74+
// Only trigger download once per client
7175
triggerRefSeqDownload(fullRefPath, fullCachePath)
7276
}
7377
}

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
}

model/src/test/java/org/gorpipe/model/gor/iterators/UTestRefSeqFromConfig.java renamed to model/src/test/java/org/gorpipe/model/gor/iterators/UTestRefSeqFromChromSeq.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import java.nio.file.Files;
1414
import java.nio.file.Path;
1515

16-
public class UTestRefSeqFromConfig {
16+
public class UTestRefSeqFromChromSeq {
1717

1818
@Rule
1919
public final ProvideSystemProperty cacheFolder
@@ -121,8 +121,7 @@ public void testGetRefbaseFromCache() throws InterruptedException {
121121

122122
RefSeqFromChromSeq refseq = new RefSeqFromChromSeq("../tests/data/ref_mini/chromSeq", new DriverBackedFileReader(""));
123123

124-
refseq.download_triggered_$eq(false);
125-
124+
RefSeqFromChromSeq.downloadTriggered().clear();
126125

127126
Assert.assertEquals('C', refseq.getBase("chr1", 101000));
128127

0 commit comments

Comments
 (0)