From d31b176e159046e70880897b99777543d942ad17 Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Wed, 20 Jul 2011 16:26:09 -0400 Subject: [PATCH] Removed GATK use of distributed parallelism framework. Moved distributed GATK prototype code into distributedutils, separating from threading package --- .../gatk/executive/LinearMicroScheduler.java | 2 +- .../sting/gatk/executive/MicroScheduler.java | 38 ------------------- .../ClosableReentrantLock.java | 2 +- .../FileBackedGenomeLocProcessingTracker.java | 2 +- .../GenomeLocProcessingTracker.java | 2 +- .../NoOpGenomeLocProcessingTracker.java | 2 +- .../ProcessingLoc.java | 2 +- .../SharedFileLock.java | 2 +- .../SharedFileThreadSafeLock.java | 2 +- ...haredMemoryGenomeLocProcessingTracker.java | 2 +- .../utils/distributedutils/package-info.java | 28 ++++++++++++++ .../GenomeLocProcessingTrackerUnitTest.java | 4 +- 12 files changed, 39 insertions(+), 49 deletions(-) rename public/java/src/org/broadinstitute/sting/utils/{threading => distributedutils}/ClosableReentrantLock.java (86%) rename public/java/src/org/broadinstitute/sting/utils/{threading => distributedutils}/FileBackedGenomeLocProcessingTracker.java (98%) rename public/java/src/org/broadinstitute/sting/utils/{threading => distributedutils}/GenomeLocProcessingTracker.java (99%) rename public/java/src/org/broadinstitute/sting/utils/{threading => distributedutils}/NoOpGenomeLocProcessingTracker.java (93%) rename public/java/src/org/broadinstitute/sting/utils/{threading => distributedutils}/ProcessingLoc.java (97%) rename public/java/src/org/broadinstitute/sting/utils/{threading => distributedutils}/SharedFileLock.java (99%) rename public/java/src/org/broadinstitute/sting/utils/{threading => distributedutils}/SharedFileThreadSafeLock.java (97%) rename public/java/src/org/broadinstitute/sting/utils/{threading => distributedutils}/SharedMemoryGenomeLocProcessingTracker.java (94%) create mode 100644 public/java/src/org/broadinstitute/sting/utils/distributedutils/package-info.java rename public/java/test/org/broadinstitute/sting/utils/{threading => distributedutils}/GenomeLocProcessingTrackerUnitTest.java (99%) diff --git a/public/java/src/org/broadinstitute/sting/gatk/executive/LinearMicroScheduler.java b/public/java/src/org/broadinstitute/sting/gatk/executive/LinearMicroScheduler.java index 9466fdf75..48fd73e0b 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/executive/LinearMicroScheduler.java +++ b/public/java/src/org/broadinstitute/sting/gatk/executive/LinearMicroScheduler.java @@ -49,7 +49,7 @@ public class LinearMicroScheduler extends MicroScheduler { Accumulator accumulator = Accumulator.create(engine,walker); int counter = 0; - for (Shard shard : processingTracker.onlyOwned(shardStrategy, engine.getName())) { + for (Shard shard : shardStrategy ) { if ( shard == null ) // we ran out of shards that aren't owned break; diff --git a/public/java/src/org/broadinstitute/sting/gatk/executive/MicroScheduler.java b/public/java/src/org/broadinstitute/sting/gatk/executive/MicroScheduler.java index 23e5769f1..e731b9864 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/executive/MicroScheduler.java +++ b/public/java/src/org/broadinstitute/sting/gatk/executive/MicroScheduler.java @@ -39,14 +39,10 @@ import org.broadinstitute.sting.gatk.traversals.*; import org.broadinstitute.sting.gatk.walkers.*; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.utils.exceptions.UserException; -import org.broadinstitute.sting.utils.threading.*; import javax.management.JMException; import javax.management.MBeanServer; import javax.management.ObjectName; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.PrintStream; import java.lang.management.ManagementFactory; import java.util.Collection; @@ -83,8 +79,6 @@ public abstract class MicroScheduler implements MicroSchedulerMBean { private final MBeanServer mBeanServer; private final ObjectName mBeanName; - protected GenomeLocProcessingTracker processingTracker; - /** * MicroScheduler factory function. Create a microscheduler appropriate for reducing the * selected walker. @@ -98,11 +92,6 @@ public abstract class MicroScheduler implements MicroSchedulerMBean { * @return The best-fit microscheduler. */ public static MicroScheduler create(GenomeAnalysisEngine engine, Walker walker, SAMDataSource reads, IndexedFastaSequenceFile reference, Collection rods, int nThreadsToUse) { - if (engine.getArguments().processingTrackerFile != null) { - if ( walker instanceof ReadWalker ) - throw new UserException.BadArgumentValue("C", String.format("Distributed GATK processing not enabled for read walkers")); - } - if (walker instanceof TreeReducible && nThreadsToUse > 1) { if(walker.isReduceByInterval()) throw new UserException.BadArgumentValue("nt", String.format("The analysis %s aggregates results by interval. Due to a current limitation of the GATK, analyses of this type do not currently support parallel execution. Please run your analysis without the -nt option.", engine.getWalkerName(walker.getClass()))); @@ -157,33 +146,6 @@ public abstract class MicroScheduler implements MicroSchedulerMBean { catch (JMException ex) { throw new ReviewedStingException("Unable to register microscheduler with JMX", ex); } - - // - // create the processing tracker - // - if ( engine.getArguments().processingTrackerFile != null ) { - logger.warn("Distributed GATK is an experimental engine feature, and is likely to not work correctly or reliably."); - if ( engine.getArguments().restartProcessingTracker && engine.getArguments().processingTrackerFile.exists() ) { - engine.getArguments().processingTrackerFile.delete(); - logger.info("Deleting ProcessingTracker file " + engine.getArguments().processingTrackerFile); - } - - PrintStream statusStream = null; - if ( engine.getArguments().processingTrackerStatusFile != null ) { - try { - statusStream = new PrintStream(new FileOutputStream(engine.getArguments().processingTrackerStatusFile)); - } catch ( FileNotFoundException e) { - throw new UserException.CouldNotCreateOutputFile(engine.getArguments().processingTrackerStatusFile, e); - } - } - - ClosableReentrantLock lock = new SharedFileThreadSafeLock(engine.getArguments().processingTrackerFile, engine.getArguments().processTrackerID); - processingTracker = new FileBackedGenomeLocProcessingTracker(engine.getArguments().processingTrackerFile, engine.getGenomeLocParser(), lock, statusStream) ; - logger.info("Creating ProcessingTracker using shared file " + engine.getArguments().processingTrackerFile + " process.id = " + engine.getName() + " CID = " + engine.getArguments().processTrackerID); - } else { - // create a NoOp version that doesn't do anything but say "yes" - processingTracker = new NoOpGenomeLocProcessingTracker(); - } } /** diff --git a/public/java/src/org/broadinstitute/sting/utils/threading/ClosableReentrantLock.java b/public/java/src/org/broadinstitute/sting/utils/distributedutils/ClosableReentrantLock.java similarity index 86% rename from public/java/src/org/broadinstitute/sting/utils/threading/ClosableReentrantLock.java rename to public/java/src/org/broadinstitute/sting/utils/distributedutils/ClosableReentrantLock.java index d16c19130..7f0c879e8 100644 --- a/public/java/src/org/broadinstitute/sting/utils/threading/ClosableReentrantLock.java +++ b/public/java/src/org/broadinstitute/sting/utils/distributedutils/ClosableReentrantLock.java @@ -1,4 +1,4 @@ -package org.broadinstitute.sting.utils.threading; +package org.broadinstitute.sting.utils.distributedutils; import java.util.concurrent.locks.ReentrantLock; diff --git a/public/java/src/org/broadinstitute/sting/utils/threading/FileBackedGenomeLocProcessingTracker.java b/public/java/src/org/broadinstitute/sting/utils/distributedutils/FileBackedGenomeLocProcessingTracker.java similarity index 98% rename from public/java/src/org/broadinstitute/sting/utils/threading/FileBackedGenomeLocProcessingTracker.java rename to public/java/src/org/broadinstitute/sting/utils/distributedutils/FileBackedGenomeLocProcessingTracker.java index 3763ec67d..eac68cbdd 100644 --- a/public/java/src/org/broadinstitute/sting/utils/threading/FileBackedGenomeLocProcessingTracker.java +++ b/public/java/src/org/broadinstitute/sting/utils/distributedutils/FileBackedGenomeLocProcessingTracker.java @@ -1,4 +1,4 @@ -package org.broadinstitute.sting.utils.threading; +package org.broadinstitute.sting.utils.distributedutils; import org.apache.log4j.Logger; import org.broadinstitute.sting.utils.GenomeLocParser; diff --git a/public/java/src/org/broadinstitute/sting/utils/threading/GenomeLocProcessingTracker.java b/public/java/src/org/broadinstitute/sting/utils/distributedutils/GenomeLocProcessingTracker.java similarity index 99% rename from public/java/src/org/broadinstitute/sting/utils/threading/GenomeLocProcessingTracker.java rename to public/java/src/org/broadinstitute/sting/utils/distributedutils/GenomeLocProcessingTracker.java index e97a73fb8..a7310743b 100644 --- a/public/java/src/org/broadinstitute/sting/utils/threading/GenomeLocProcessingTracker.java +++ b/public/java/src/org/broadinstitute/sting/utils/distributedutils/GenomeLocProcessingTracker.java @@ -1,4 +1,4 @@ -package org.broadinstitute.sting.utils.threading; +package org.broadinstitute.sting.utils.distributedutils; import net.sf.picard.reference.IndexedFastaSequenceFile; import org.apache.log4j.Logger; diff --git a/public/java/src/org/broadinstitute/sting/utils/threading/NoOpGenomeLocProcessingTracker.java b/public/java/src/org/broadinstitute/sting/utils/distributedutils/NoOpGenomeLocProcessingTracker.java similarity index 93% rename from public/java/src/org/broadinstitute/sting/utils/threading/NoOpGenomeLocProcessingTracker.java rename to public/java/src/org/broadinstitute/sting/utils/distributedutils/NoOpGenomeLocProcessingTracker.java index ad2a6d31b..9807b6efa 100644 --- a/public/java/src/org/broadinstitute/sting/utils/threading/NoOpGenomeLocProcessingTracker.java +++ b/public/java/src/org/broadinstitute/sting/utils/distributedutils/NoOpGenomeLocProcessingTracker.java @@ -1,4 +1,4 @@ -package org.broadinstitute.sting.utils.threading; +package org.broadinstitute.sting.utils.distributedutils; import java.util.Collection; import java.util.Collections; diff --git a/public/java/src/org/broadinstitute/sting/utils/threading/ProcessingLoc.java b/public/java/src/org/broadinstitute/sting/utils/distributedutils/ProcessingLoc.java similarity index 97% rename from public/java/src/org/broadinstitute/sting/utils/threading/ProcessingLoc.java rename to public/java/src/org/broadinstitute/sting/utils/distributedutils/ProcessingLoc.java index ee2283dcf..0957ac1ae 100644 --- a/public/java/src/org/broadinstitute/sting/utils/threading/ProcessingLoc.java +++ b/public/java/src/org/broadinstitute/sting/utils/distributedutils/ProcessingLoc.java @@ -1,4 +1,4 @@ -package org.broadinstitute.sting.utils.threading; +package org.broadinstitute.sting.utils.distributedutils; import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.HasGenomeLocation; diff --git a/public/java/src/org/broadinstitute/sting/utils/threading/SharedFileLock.java b/public/java/src/org/broadinstitute/sting/utils/distributedutils/SharedFileLock.java similarity index 99% rename from public/java/src/org/broadinstitute/sting/utils/threading/SharedFileLock.java rename to public/java/src/org/broadinstitute/sting/utils/distributedutils/SharedFileLock.java index 0f47da413..bda62b890 100644 --- a/public/java/src/org/broadinstitute/sting/utils/threading/SharedFileLock.java +++ b/public/java/src/org/broadinstitute/sting/utils/distributedutils/SharedFileLock.java @@ -1,4 +1,4 @@ -package org.broadinstitute.sting.utils.threading; +package org.broadinstitute.sting.utils.distributedutils; import org.apache.log4j.Logger; import org.apache.lucene.store.*; diff --git a/public/java/src/org/broadinstitute/sting/utils/threading/SharedFileThreadSafeLock.java b/public/java/src/org/broadinstitute/sting/utils/distributedutils/SharedFileThreadSafeLock.java similarity index 97% rename from public/java/src/org/broadinstitute/sting/utils/threading/SharedFileThreadSafeLock.java rename to public/java/src/org/broadinstitute/sting/utils/distributedutils/SharedFileThreadSafeLock.java index d70879a0a..49fc8208a 100644 --- a/public/java/src/org/broadinstitute/sting/utils/threading/SharedFileThreadSafeLock.java +++ b/public/java/src/org/broadinstitute/sting/utils/distributedutils/SharedFileThreadSafeLock.java @@ -1,4 +1,4 @@ -package org.broadinstitute.sting.utils.threading; +package org.broadinstitute.sting.utils.distributedutils; import org.apache.log4j.Logger; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; diff --git a/public/java/src/org/broadinstitute/sting/utils/threading/SharedMemoryGenomeLocProcessingTracker.java b/public/java/src/org/broadinstitute/sting/utils/distributedutils/SharedMemoryGenomeLocProcessingTracker.java similarity index 94% rename from public/java/src/org/broadinstitute/sting/utils/threading/SharedMemoryGenomeLocProcessingTracker.java rename to public/java/src/org/broadinstitute/sting/utils/distributedutils/SharedMemoryGenomeLocProcessingTracker.java index 9bf8b58b1..0e62d0f63 100644 --- a/public/java/src/org/broadinstitute/sting/utils/threading/SharedMemoryGenomeLocProcessingTracker.java +++ b/public/java/src/org/broadinstitute/sting/utils/distributedutils/SharedMemoryGenomeLocProcessingTracker.java @@ -1,4 +1,4 @@ -package org.broadinstitute.sting.utils.threading; +package org.broadinstitute.sting.utils.distributedutils; import java.io.PrintStream; import java.util.ArrayList; diff --git a/public/java/src/org/broadinstitute/sting/utils/distributedutils/package-info.java b/public/java/src/org/broadinstitute/sting/utils/distributedutils/package-info.java new file mode 100644 index 000000000..033120dc5 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/utils/distributedutils/package-info.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2011, The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * Utilities for prototype distributed GATK. No longer in use in the codebase + */ +package org.broadinstitute.sting.utils.distributedutils; diff --git a/public/java/test/org/broadinstitute/sting/utils/threading/GenomeLocProcessingTrackerUnitTest.java b/public/java/test/org/broadinstitute/sting/utils/distributedutils/GenomeLocProcessingTrackerUnitTest.java similarity index 99% rename from public/java/test/org/broadinstitute/sting/utils/threading/GenomeLocProcessingTrackerUnitTest.java rename to public/java/test/org/broadinstitute/sting/utils/distributedutils/GenomeLocProcessingTrackerUnitTest.java index 78ab916db..139937e29 100644 --- a/public/java/test/org/broadinstitute/sting/utils/threading/GenomeLocProcessingTrackerUnitTest.java +++ b/public/java/test/org/broadinstitute/sting/utils/distributedutils/GenomeLocProcessingTrackerUnitTest.java @@ -1,5 +1,5 @@ // our package -package org.broadinstitute.sting.utils.threading; +package org.broadinstitute.sting.utils.distributedutils; // the imports for unit testing. @@ -7,9 +7,9 @@ package org.broadinstitute.sting.utils.threading; import net.sf.picard.reference.IndexedFastaSequenceFile; import org.broadinstitute.sting.BaseTest; -import org.broadinstitute.sting.gatk.iterators.GenomeLocusIterator; import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.GenomeLocParser; +import org.broadinstitute.sting.utils.distributedutils.*; import org.broadinstitute.sting.utils.exceptions.UserException; import org.testng.Assert; import org.testng.annotations.*;