Skip to content

Commit 4c8750d

Browse files
committed
Bugfix genome cache maintenance task
1 parent cf0b65c commit 4c8750d

File tree

9 files changed

+29
-14
lines changed

9 files changed

+29
-14
lines changed

SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/pipeline/ReferenceGenomeManager.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,11 @@ public void markGenomeModified(ReferenceGenome genome) throws IOException
6868

6969
public void cacheGenomeLocally(ReferenceGenome genome, Logger log) throws PipelineJobException
7070
{
71-
File localCacheDir = SequencePipelineService.get().getRemoteGenomeCacheDirectory();
72-
if (localCacheDir == null)
71+
if (!SequencePipelineService.get().isRemoteGenomeCacheUsed())
7372
{
7473
return;
7574
}
7675

77-
log.info("attempting to rsync genome to local disks: " + localCacheDir.getPath());
7876
if (genome.isTemporaryGenome())
7977
{
8078
log.info("cannot cache custom genomes, skipping");
@@ -87,6 +85,9 @@ public void cacheGenomeLocally(ReferenceGenome genome, Logger log) throws Pipeli
8785
return;
8886
}
8987

88+
File localCacheDir = SequencePipelineService.get().getRemoteGenomeCacheDirectory();
89+
log.info("attempting to rsync genome to local disks: " + localCacheDir.getPath());
90+
9091
File sourceDir = genome.getSourceFastaFile().getParentFile();
9192

9293
new SimpleScriptWrapper(log).execute(Arrays.asList(
@@ -95,6 +96,12 @@ public void cacheGenomeLocally(ReferenceGenome genome, Logger log) throws Pipeli
9596

9697
try
9798
{
99+
File lastUpdate = getLocalUpdateFile(genome);
100+
if (!lastUpdate.exists())
101+
{
102+
FileUtils.touch(lastUpdate);
103+
}
104+
98105
FileUtils.touch(getRemoteSyncFile(genome.getGenomeId()));
99106
}
100107
catch (IOException e)

SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/pipeline/SequencePipelineService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ static public void setInstance(SequencePipelineService instance)
7878

7979
abstract public List<String> getJavaOpts(@Nullable Integer maxRamOverride);
8080

81+
abstract public boolean isRemoteGenomeCacheUsed();
82+
8183
@Nullable
8284
abstract public File getRemoteGenomeCacheDirectory();
8385

SequenceAnalysis/src/org/labkey/sequenceanalysis/SequenceAnalysisMaintenanceTask.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public void run(Logger log)
7777

7878
private void possiblySubmitRemoteTask(Logger log)
7979
{
80-
if (SequencePipelineService.get().getRemoteGenomeCacheDirectory() != null)
80+
if (SequencePipelineService.get().isRemoteGenomeCacheUsed())
8181
{
8282
JobRunner jr = JobRunner.getDefault();
8383
jr.execute(new Runnable()
@@ -121,6 +121,10 @@ public void run()
121121

122122
jr.waitForCompletion();
123123
}
124+
else
125+
{
126+
log.debug("Genome caching not used, skipping");
127+
}
124128
}
125129

126130
private void verifySequenceDataPresent(Logger log)

SequenceAnalysis/src/org/labkey/sequenceanalysis/SequencePipelineServiceImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,13 @@ else if (maxRam != null)
317317
return params;
318318
}
319319

320+
@Override
321+
public boolean isRemoteGenomeCacheUsed()
322+
{
323+
String dir = PipelineJobService.get().getConfigProperties().getSoftwarePackagePath("REMOTE_GENOME_CACHE_DIR");
324+
return StringUtils.trimToNull(dir) != null;
325+
}
326+
320327
@Override
321328
public File getRemoteGenomeCacheDirectory()
322329
{

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/CacheAlignerIndexesTask.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,7 @@ public RecordedActionSet run() throws PipelineJobException
164164
}
165165

166166
//also try to rsync, if enabled
167-
File cacheDir = SequencePipelineService.get().getRemoteGenomeCacheDirectory();
168-
if (cacheDir != null)
167+
if (SequencePipelineService.get().isRemoteGenomeCacheUsed())
169168
{
170169
ReferenceGenomeManager.get().cacheGenomeLocally(referenceGenome, getJob().getLogger());
171170
}

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/CacheGenomeTrigger.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@ public boolean isAvailable(Container c)
6868
public static void cacheGenomes(Container c, User u, Map<Integer, File> genomeMap, Logger log, boolean deleteOtherFolders)
6969
{
7070
//Dont start pipeline job unless REMOTE_GENOME_CACHE_DIR is set
71-
File cacheDir = SequencePipelineService.get().getRemoteGenomeCacheDirectory();
72-
if (cacheDir == null)
71+
if (!SequencePipelineService.get().isRemoteGenomeCacheUsed())
7372
{
7473
return;
7574
}

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/ReferenceGenomeImpl.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,7 @@ public File getAlignerIndexDir(String name)
138138
{
139139
//if we rsync locally, these are cached w/ the same structure as the server
140140
//this only applies for saved reference genomes (i.e. genomeId != null)
141-
File remoteDir = SequencePipelineService.get().getRemoteGenomeCacheDirectory();
142-
if (remoteDir == null)
141+
if (!SequencePipelineService.get().isRemoteGenomeCacheUsed())
143142
{
144143
return new File(_workingFasta.getParentFile(), name);
145144
}

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/SequenceAlignmentTask.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -408,8 +408,7 @@ private void copyReferenceResources() throws PipelineJobException
408408
doCopy = true;
409409
}
410410

411-
File localCachedIndexDir = SequencePipelineService.get().getRemoteGenomeCacheDirectory();
412-
if (localCachedIndexDir != null)
411+
if (SequencePipelineService.get().isRemoteGenomeCacheUsed())
413412
{
414413
ReferenceGenomeManager.get().cacheGenomeLocally(referenceGenome, getJob().getLogger());
415414
}

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/SequenceOutputHandlerRemoteTask.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,7 @@ private SequenceOutputHandlerJob getPipelineJob()
100100

101101
public static void possiblyCacheGenomes(SequenceJob job, List<SequenceOutputFile> inputs) throws PipelineJobException
102102
{
103-
File localCachedIndexDir = SequencePipelineService.get().getRemoteGenomeCacheDirectory();
104-
if (localCachedIndexDir != null)
103+
if (SequencePipelineService.get().isRemoteGenomeCacheUsed())
105104
{
106105
Set<Integer> distinctGenomes = inputs.stream().map(SequenceOutputFile::getLibrary_id).filter(Predicates.notNull()).collect(Collectors.toSet());
107106
for (Integer l : distinctGenomes)

0 commit comments

Comments
 (0)