package org.opendaylight.mdsal.dom.store.inmemory;
+import com.google.common.annotations.Beta;
+import com.google.common.base.Preconditions;
import java.util.Collection;
import java.util.concurrent.Callable;
import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-class ShardSubmitCoordinationTask implements Callable<Void> {
+/**
+ * Task that coordinates all phases of transaction submit from the provided {@link DOMStoreThreePhaseCommitCohort}'s.
+ * Each phase will only be started once all cohorts have finished the previous phase.
+ */
+@Beta
+public class ShardSubmitCoordinationTask implements Callable<Void> {
private static final Logger LOG = LoggerFactory.getLogger(ShardSubmitCoordinationTask.class);
private final ShardCommitCoordinationTask commitCoordinationTask;
- ShardSubmitCoordinationTask(final DOMDataTreeIdentifier rootShardPrefix,
+ public ShardSubmitCoordinationTask(final DOMDataTreeIdentifier rootShardPrefix,
final Collection<DOMStoreThreePhaseCommitCohort> cohorts) {
- this.rootShardPrefix = rootShardPrefix;
+ this.rootShardPrefix = Preconditions.checkNotNull(rootShardPrefix);
canCommitCoordinationTask = new ShardCanCommitCoordinationTask(rootShardPrefix, cohorts);
preCommitCoordinationTask = new ShardPreCommitCoordinationTask(rootShardPrefix, cohorts);