Return-Path: X-Original-To: apmail-hadoop-mapreduce-commits-archive@minotaur.apache.org Delivered-To: apmail-hadoop-mapreduce-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 73703D26F for ; Fri, 29 Jun 2012 13:42:10 +0000 (UTC) Received: (qmail 39032 invoked by uid 500); 29 Jun 2012 13:42:10 -0000 Delivered-To: apmail-hadoop-mapreduce-commits-archive@hadoop.apache.org Received: (qmail 38810 invoked by uid 500); 29 Jun 2012 13:42:09 -0000 Mailing-List: contact mapreduce-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: mapreduce-dev@hadoop.apache.org Delivered-To: mailing list mapreduce-commits@hadoop.apache.org Received: (qmail 38795 invoked by uid 99); 29 Jun 2012 13:42:09 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Jun 2012 13:42:09 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Jun 2012 13:42:08 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id ED27923888CD; Fri, 29 Jun 2012 13:41:47 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1355382 - in /hadoop/common/trunk/hadoop-mapreduce-project: ./ hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/jobcontrol/ hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/jav... Date: Fri, 29 Jun 2012 13:41:47 -0000 To: mapreduce-commits@hadoop.apache.org From: bobby@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120629134147.ED27923888CD@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: bobby Date: Fri Jun 29 13:41:46 2012 New Revision: 1355382 URL: http://svn.apache.org/viewvc?rev=1355382&view=rev Log: Reverting MAPREDUCE-4371 to address test failures. Removed: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/lib/jobcontrol/TestJobControl.java Modified: hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/jobcontrol/JobControl.java Modified: hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt?rev=1355382&r1=1355381&r2=1355382&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt Fri Jun 29 13:41:46 2012 @@ -123,9 +123,6 @@ Trunk (unreleased changes) MAPREDUCE-3868. Make Raid Compile. (Weiyan Wang via schen) - MAPREDUCE-4371. Check for cyclic dependencies in Jobcontrol job DAG - (madhukara phatak via bobby) - Branch-2 ( Unreleased changes ) INCOMPATIBLE CHANGES Modified: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/jobcontrol/JobControl.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/jobcontrol/JobControl.java?rev=1355382&r1=1355381&r2=1355382&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/jobcontrol/JobControl.java (original) +++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/jobcontrol/JobControl.java Fri Jun 29 13:41:46 2012 @@ -24,8 +24,6 @@ import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; -import java.util.HashMap; -import java.util.HashSet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -217,10 +215,6 @@ public class JobControl implements Runna } synchronized(this) { - if (isCircular(jobsInProgress)) { - throw new IllegalArgumentException( - "job control has circular dependency"); - } Iterator it = jobsInProgress.iterator(); while(it.hasNext()) { ControlledJob j = it.next(); @@ -287,64 +281,4 @@ public class JobControl implements Runna } } } - - /** - * Uses topological sorting algorithm for finding circular dependency - */ - private boolean isCircular(final List jobList) { - boolean cyclePresent = false; - HashSet SourceSet = new HashSet(); - HashMap> processedMap = - new HashMap>(); - for (ControlledJob n : jobList) { - processedMap.put(n, new ArrayList()); - } - for (ControlledJob n : jobList) { - if (!hasInComingEdge(n, jobList, processedMap)) { - SourceSet.add(n); - } - } - while (!SourceSet.isEmpty()) { - ControlledJob controlledJob = SourceSet.iterator().next(); - SourceSet.remove(controlledJob); - if (controlledJob.getDependentJobs() != null) { - for (int i = 0; i < controlledJob.getDependentJobs().size(); i++) { - ControlledJob depenControlledJob = - controlledJob.getDependentJobs().get(i); - processedMap.get(controlledJob).add(depenControlledJob); - if (!hasInComingEdge(controlledJob, jobList, processedMap)) { - SourceSet.add(depenControlledJob); - } - } - } - } - - for (ControlledJob controlledJob : jobList) { - if (controlledJob.getDependentJobs() != null - && controlledJob.getDependentJobs().size() != processedMap.get( - controlledJob).size()) { - cyclePresent = true; - LOG.error("Job control has circular dependency for the job " - + controlledJob.getJobName()); - break; - } - } - return cyclePresent; - } - - private boolean hasInComingEdge(ControlledJob controlledJob, - List controlledJobList, - HashMap> processedMap) { - boolean hasIncomingEdge = false; - for (ControlledJob k : controlledJobList) { - if (k != controlledJob && k.getDependentJobs() != null - && !processedMap.get(k).contains(controlledJob) - && k.getDependentJobs().contains(controlledJob)) { - hasIncomingEdge = true; - break; - } - } - return hasIncomingEdge; - - } }