Return-Path: X-Original-To: apmail-whirr-commits-archive@www.apache.org Delivered-To: apmail-whirr-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 3A60B71C2 for ; Tue, 1 Nov 2011 06:31:28 +0000 (UTC) Received: (qmail 77360 invoked by uid 500); 1 Nov 2011 06:31:27 -0000 Delivered-To: apmail-whirr-commits-archive@whirr.apache.org Received: (qmail 77327 invoked by uid 500); 1 Nov 2011 06:31:25 -0000 Mailing-List: contact commits-help@whirr.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@whirr.apache.org Delivered-To: mailing list commits@whirr.apache.org Received: (qmail 77316 invoked by uid 99); 1 Nov 2011 06:31:24 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Nov 2011 06:31:24 +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; Tue, 01 Nov 2011 06:31:22 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 9CE6E2388A02; Tue, 1 Nov 2011 06:31:00 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1195841 - in /whirr/trunk: CHANGES.txt core/src/main/java/org/apache/whirr/compute/StartupProcess.java Date: Tue, 01 Nov 2011 06:31:00 -0000 To: commits@whirr.apache.org From: asavu@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111101063100.9CE6E2388A02@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: asavu Date: Tue Nov 1 06:31:00 2011 New Revision: 1195841 URL: http://svn.apache.org/viewvc?rev=1195841&view=rev Log: WHIRR-423. Refactor StartupProcess.cleanupFailedNodes (Adrian Cole via asavu) Modified: whirr/trunk/CHANGES.txt whirr/trunk/core/src/main/java/org/apache/whirr/compute/StartupProcess.java Modified: whirr/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/whirr/trunk/CHANGES.txt?rev=1195841&r1=1195840&r2=1195841&view=diff ============================================================================== --- whirr/trunk/CHANGES.txt (original) +++ whirr/trunk/CHANGES.txt Tue Nov 1 06:31:00 2011 @@ -54,6 +54,8 @@ Trunk (unreleased changes) WHIRR-418. Add ssh debug logs to tests (Adrian Cole via asavu) + WHIRR-423. Refactor StartupProcess.cleanupFailedNodes (Adrian Cole via asavu) + BUG FIXES WHIRR-377. Fix broken CLI logging config. (asavu via tomwhite) Modified: whirr/trunk/core/src/main/java/org/apache/whirr/compute/StartupProcess.java URL: http://svn.apache.org/viewvc/whirr/trunk/core/src/main/java/org/apache/whirr/compute/StartupProcess.java?rev=1195841&r1=1195840&r2=1195841&view=diff ============================================================================== --- whirr/trunk/core/src/main/java/org/apache/whirr/compute/StartupProcess.java (original) +++ whirr/trunk/core/src/main/java/org/apache/whirr/compute/StartupProcess.java Tue Nov 1 06:31:00 2011 @@ -18,6 +18,7 @@ package org.apache.whirr.compute; +import com.google.common.base.Predicates; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import org.jclouds.compute.ComputeService; @@ -28,8 +29,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; -import java.util.Iterator; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; @@ -143,31 +144,19 @@ public class StartupProcess implements C void cleanupFailedNodes() throws InterruptedException { if (lostNodes.size() > 0) { - // parallel destroy of failed nodes - Set> deletingNodeFutures = Sets.newLinkedHashSet(); - Iterator it = lostNodes.keySet().iterator(); - while (it.hasNext()) { - final NodeMetadata badNode = (NodeMetadata) it.next(); - deletingNodeFutures.add(executorService.submit( - new Callable() { - public NodeMetadata call() throws Exception { - final String nodeId = badNode.getId(); - LOG.info("Deleting failed node node {}", nodeId); - computeService.destroyNode(nodeId); - LOG.info("Node deleted: {}", nodeId); - return badNode; - } - } - )); + Set lostIds = Sets.newLinkedHashSet(); + for (Entry lostNode : lostNodes.entrySet()) { + LOG.debug("Will destroy failed node {}", lostNode.getKey(), lostNode.getValue()); + lostIds.add(lostNode.getKey().getId()); } - Iterator> results = deletingNodeFutures.iterator(); - while (results.hasNext()) { - try { - results.next().get(); - } catch (ExecutionException e) { - LOG.warn("Error while destroying failed node:", e); - } + LOG.info("Destroying failed nodes {}", lostIds); + Set destroyedNodes = computeService.destroyNodesMatching( + Predicates.in(lostNodes.keySet())); + lostIds.clear(); + for (NodeMetadata destroyed : destroyedNodes) { + lostIds.add(destroyed.getId()); } + LOG.info("Destroyed failed nodes {}", lostIds); } } }