Propagate TimeoutException in awaitCompletion
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java
index 4808f23..4006a33 100644
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java
+++ b/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java
@@ -18,12 +18,14 @@
*/
package org.jclouds.chef.strategy.internal;
+import static com.google.common.base.Throwables.propagate;
import static com.google.common.collect.Maps.newHashMap;
import static org.jclouds.concurrent.FutureIterables.awaitCompletion;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
+import java.util.concurrent.TimeoutException;
import javax.annotation.Resource;
import javax.inject.Named;
@@ -58,8 +60,8 @@
protected Long maxTime;
@Inject
- DeleteAllClientsInListImpl(@Named(Constants.PROPERTY_USER_THREADS) ExecutorService userExecutor,
- ChefApi getAllApi, ChefAsyncApi ablobstore) {
+ DeleteAllClientsInListImpl(@Named(Constants.PROPERTY_USER_THREADS) ExecutorService userExecutor, ChefApi getAllApi,
+ ChefAsyncApi ablobstore) {
this.userExecutor = userExecutor;
this.chefAsyncApi = ablobstore;
this.chefApi = getAllApi;
@@ -72,8 +74,12 @@
for (String name : names) {
responses.put(name, chefAsyncApi.deleteClient(name));
}
- exceptions = awaitCompletion(responses, userExecutor, maxTime, logger, String.format(
- "deleting apis: %s", names));
+ try {
+ exceptions = awaitCompletion(responses, userExecutor, maxTime, logger,
+ String.format("deleting apis: %s", names));
+ } catch (TimeoutException e) {
+ propagate(e);
+ }
if (exceptions.size() > 0)
throw new RuntimeException(String.format("errors deleting clients: %s: %s", names, exceptions));
}
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java
index 50721d3..24a6ab2 100644
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java
+++ b/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java
@@ -18,20 +18,22 @@
*/
package org.jclouds.chef.strategy.internal;
+import static com.google.common.base.Throwables.propagate;
import static com.google.common.collect.Maps.newHashMap;
import static org.jclouds.concurrent.FutureIterables.awaitCompletion;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
+import java.util.concurrent.TimeoutException;
import javax.annotation.Resource;
import javax.inject.Named;
import javax.inject.Singleton;
import org.jclouds.Constants;
-import org.jclouds.chef.ChefAsyncApi;
import org.jclouds.chef.ChefApi;
+import org.jclouds.chef.ChefAsyncApi;
import org.jclouds.chef.config.ChefProperties;
import org.jclouds.chef.strategy.DeleteAllNodesInList;
import org.jclouds.logging.Logger;
@@ -58,8 +60,8 @@
protected Long maxTime;
@Inject
- DeleteAllNodesInListImpl(@Named(Constants.PROPERTY_USER_THREADS) ExecutorService userExecutor,
- ChefApi getAllNode, ChefAsyncApi ablobstore) {
+ DeleteAllNodesInListImpl(@Named(Constants.PROPERTY_USER_THREADS) ExecutorService userExecutor, ChefApi getAllNode,
+ ChefAsyncApi ablobstore) {
this.userExecutor = userExecutor;
this.chefAsyncApi = ablobstore;
this.chefApi = getAllNode;
@@ -72,8 +74,12 @@
for (String name : names) {
responses.put(name, chefAsyncApi.deleteNode(name));
}
- exceptions = awaitCompletion(responses, userExecutor, maxTime, logger, String.format(
- "deleting nodes: %s", names));
+ try {
+ exceptions = awaitCompletion(responses, userExecutor, maxTime, logger,
+ String.format("deleting nodes: %s", names));
+ } catch (TimeoutException e) {
+ propagate(e);
+ }
if (exceptions.size() > 0)
throw new RuntimeException(String.format("errors deleting nodes: %s: %s", names, exceptions));
}