package org.opendaylight.mdsal.dom.store.inmemory;
+import com.google.common.annotations.Beta;
+import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.Collection;
import java.util.concurrent.Callable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-class ShardCanCommitCoordinationTask implements Callable<Boolean> {
+/**
+ * Task that coordinates the CanCommit phase of the provided {@link DOMStoreThreePhaseCommitCohort}'s
+ */
+@Beta
+public class ShardCanCommitCoordinationTask implements Callable<Boolean> {
private static final Logger LOG = LoggerFactory.getLogger(ShardCanCommitCoordinationTask.class);
private final DOMDataTreeIdentifier rootShardPrefix;
private final Collection<DOMStoreThreePhaseCommitCohort> cohorts;
- ShardCanCommitCoordinationTask(final DOMDataTreeIdentifier rootShardPrefix,
+ public ShardCanCommitCoordinationTask(final DOMDataTreeIdentifier rootShardPrefix,
final Collection<DOMStoreThreePhaseCommitCohort> cohorts) {
- this.rootShardPrefix = rootShardPrefix;
- this.cohorts = cohorts;
+ this.rootShardPrefix = Preconditions.checkNotNull(rootShardPrefix);
+ this.cohorts = Preconditions.checkNotNull(cohorts);
}
@Override
canCommitBlocking();
return true;
- } catch (TransactionCommitFailedException e) {
+ } catch (final TransactionCommitFailedException e) {
LOG.warn("Shard: {} Submit Error during phase CanCommit, starting Abort", rootShardPrefix, e);
//FIXME abort here
throw e;
try {
final Boolean result = (Boolean)canCommit.get();
if (result == null || !result) {
- throw new TransactionCommitFailedException("Can Commit failed, no detailed cause available.");
+ throw new TransactionCommitFailedException("CanCommit failed, no detailed cause available.");
}
} catch (InterruptedException | ExecutionException e) {
throw new TransactionCommitFailedException("CanCommit failed", e);