import com.google.common.base.Preconditions;
import com.google.common.primitives.UnsignedLong;
import com.google.common.util.concurrent.FutureCallback;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeoutException;
+import java.util.Optional;
+import java.util.SortedSet;
import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
import org.opendaylight.controller.cluster.datastore.ShardCommitCoordinator.CohortDecorator;
import org.opendaylight.controller.cluster.datastore.modification.Modification;
private Shard shard;
private CohortEntry(final ReadWriteShardDataTreeTransaction transaction, final short clientVersion) {
+ this.cohort = null;
this.transaction = Preconditions.checkNotNull(transaction);
- this.transactionId = transaction.getId();
+ this.transactionId = transaction.getIdentifier();
this.clientVersion = clientVersion;
}
cohort.commit(callback);
}
- void abort() throws InterruptedException, ExecutionException, TimeoutException {
- cohort.abort().get();
+ void abort(final FutureCallback<Void> callback) {
+ cohort.abort(callback);
}
- void ready(final CohortDecorator cohortDecorator) {
+ void ready(final Optional<SortedSet<String>> participatingShardNames, final CohortDecorator cohortDecorator) {
Preconditions.checkState(cohort == null, "cohort was already set");
- cohort = transaction.ready();
+ cohort = transaction.ready(participatingShardNames);
if (cohortDecorator != null) {
// Call the hook for unit tests.
}
}
+ boolean isSealed() {
+ return cohort != null;
+ }
+
+ Optional<SortedSet<String>> getParticipatingShardNames() {
+ return cohort != null ? cohort.getParticipatingShardNames() : Optional.empty();
+ }
+
boolean isDoImmediateCommit() {
return doImmediateCommit;
}