You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whirr.apache.org by as...@apache.org on 2011/11/01 07:31:00 UTC
svn commit: r1195841 - in /whirr/trunk: CHANGES.txt
core/src/main/java/org/apache/whirr/compute/StartupProcess.java
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<Future<NodeMetadata>> deletingNodeFutures = Sets.newLinkedHashSet();
- Iterator<?> it = lostNodes.keySet().iterator();
- while (it.hasNext()) {
- final NodeMetadata badNode = (NodeMetadata) it.next();
- deletingNodeFutures.add(executorService.submit(
- new Callable<NodeMetadata>() {
- 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<String> lostIds = Sets.newLinkedHashSet();
+ for (Entry<NodeMetadata, Throwable> lostNode : lostNodes.entrySet()) {
+ LOG.debug("Will destroy failed node {}", lostNode.getKey(), lostNode.getValue());
+ lostIds.add(lostNode.getKey().getId());
}
- Iterator<Future<NodeMetadata>> 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<? extends NodeMetadata> destroyedNodes = computeService.destroyNodesMatching(
+ Predicates.in(lostNodes.keySet()));
+ lostIds.clear();
+ for (NodeMetadata destroyed : destroyedNodes) {
+ lostIds.add(destroyed.getId());
}
+ LOG.info("Destroyed failed nodes {}", lostIds);
}
}
}