BUG-8618: improve logging
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / SimpleShardDataTreeCohort.java
index 2a8fdbe3dbdfbd6d0b675c311de83d5528ae6686..6c159b1f5e1ce65c211b4a0ea2442ec964c319b3 100644 (file)
@@ -8,11 +8,14 @@
 package org.opendaylight.controller.cluster.datastore;
 
 import akka.dispatch.ExecutionContexts;
+import akka.dispatch.Futures;
 import akka.dispatch.OnComplete;
+import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Verify;
 import com.google.common.primitives.UnsignedLong;
 import com.google.common.util.concurrent.FutureCallback;
+import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeoutException;
@@ -38,6 +41,11 @@ abstract class SimpleShardDataTreeCohort extends ShardDataTreeCohort {
         void throwCanCommitFailure() throws Exception {
             throw failure;
         }
+
+        @Override
+        ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
+            return super.addToStringAttributes(toStringHelper).add("failure", failure);
+        }
     }
 
     static final class Normal extends SimpleShardDataTreeCohort {
@@ -126,13 +134,13 @@ abstract class SimpleShardDataTreeCohort extends ShardDataTreeCohort {
         candidate = null;
         state = State.ABORTED;
 
-        final Optional<Future<Iterable<Object>>> maybeAborts = userCohorts.abort();
+        final Optional<List<Future<Object>>> maybeAborts = userCohorts.abort();
         if (!maybeAborts.isPresent()) {
             abortCallback.onSuccess(null);
             return;
         }
 
-        final Future<Iterable<Object>> aborts = maybeAborts.get();
+        final Future<Iterable<Object>> aborts = Futures.sequence(maybeAborts.get(), ExecutionContexts.global());
         if (aborts.isCompleted()) {
             abortCallback.onSuccess(null);
             return;
@@ -259,4 +267,9 @@ abstract class SimpleShardDataTreeCohort extends ShardDataTreeCohort {
     public boolean isFailed() {
         return state == State.FAILED || nextFailure != null;
     }
+
+    @Override
+    ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
+        return super.addToStringAttributes(toStringHelper).add("nextFailure", nextFailure);
+    }
 }