Skip to content

Commit f46c65c

Browse files
committed
For VariantProcessingJob: dont double-create the split jobs on restart
1 parent e7e9cfd commit f46c65c

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,18 @@
1616
import org.junit.Assert;
1717
import org.junit.Test;
1818
import org.labkey.api.data.Container;
19+
import org.labkey.api.data.SimpleFilter;
20+
import org.labkey.api.data.TableInfo;
21+
import org.labkey.api.data.TableSelector;
1922
import org.labkey.api.pipeline.PipeRoot;
2023
import org.labkey.api.pipeline.PipelineJob;
2124
import org.labkey.api.pipeline.PipelineJobException;
2225
import org.labkey.api.pipeline.PipelineJobService;
26+
import org.labkey.api.pipeline.PipelineService;
2327
import org.labkey.api.pipeline.TaskId;
2428
import org.labkey.api.pipeline.TaskPipeline;
2529
import org.labkey.api.pipeline.WorkDirectory;
30+
import org.labkey.api.query.FieldKey;
2631
import org.labkey.api.reader.Readers;
2732
import org.labkey.api.security.User;
2833
import org.labkey.api.sequenceanalysis.SequenceAnalysisService;
@@ -207,9 +212,21 @@ public List<PipelineJob> createSplitJobs()
207212
{
208213
ArrayList<PipelineJob> jobs = new ArrayList<>();
209214
Map<String, List<Interval>> intervalMap = getJobToIntervalMap();
215+
final TableInfo ti = PipelineService.get().getJobsTable(getUser(), getContainer());
210216
for (String name : intervalMap.keySet())
211217
{
212-
jobs.add(createSingleContigJob(name));
218+
// Check if exists and only create if needed:
219+
SimpleFilter filter = new SimpleFilter(FieldKey.fromString("JobParent"), getJobGUID());
220+
filter.addCondition(FieldKey.fromString("Name"), getChildJobName(this, name));
221+
TableSelector ts = new TableSelector(ti, filter, null);
222+
if (ts.exists())
223+
{
224+
getLogger().debug("Child job already exists, will not re-create: " + getChildJobName(this, name));
225+
}
226+
else
227+
{
228+
jobs.add(createSingleContigJob(name));
229+
}
213230
}
214231

215232
return Collections.unmodifiableList(jobs);
@@ -275,6 +292,8 @@ private PipelineJob createSingleContigJob(String jobNameSuffix)
275292
{
276293
try
277294
{
295+
String jobName = getChildJobName(this, jobNameSuffix);
296+
278297
VariantProcessingJob childJob = new VariantProcessingJob(this, jobNameSuffix);
279298

280299
return childJob;

0 commit comments

Comments
 (0)