Code Review
/
controller.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Rework CDS commit cohort impl to handle yang lists
[controller.git]
/
opendaylight
/
md-sal
/
sal-distributed-datastore
/
src
/
main
/
java
/
org
/
opendaylight
/
controller
/
cluster
/
datastore
/
DataTreeCohortActor.java
diff --git
a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActor.java
b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActor.java
index 10ffe1f7b7dd40793820caa078b58be7855a65e1..da1117764f8b8146ef7f8f49e22bcc7f2ef64d8b 100644
(file)
--- a/
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActor.java
+++ b/
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActor.java
@@
-12,6
+12,7
@@
import akka.actor.ActorRef;
import akka.actor.Props;
import akka.actor.Status;
import com.google.common.base.Preconditions;
import akka.actor.Props;
import akka.actor.Status;
import com.google.common.base.Preconditions;
+import java.util.Collection;
import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
import org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor;
import org.opendaylight.mdsal.common.api.PostCanCommitStep;
import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
import org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor;
import org.opendaylight.mdsal.common.api.PostCanCommitStep;
@@
-19,26
+20,29
@@
import org.opendaylight.mdsal.common.api.PostPreCommitStep;
import org.opendaylight.mdsal.common.api.ThreePhaseCommitStep;
import org.opendaylight.mdsal.dom.api.DOMDataTreeCandidate;
import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohort;
import org.opendaylight.mdsal.common.api.ThreePhaseCommitStep;
import org.opendaylight.mdsal.dom.api.DOMDataTreeCandidate;
import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohort;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Proxy actor which acts as a facade to the user-provided commit cohort. Responsible for
* decapsulating DataTreeChanged messages and dispatching their context to the user.
*/
final class DataTreeCohortActor extends AbstractUntypedActor {
/**
* Proxy actor which acts as a facade to the user-provided commit cohort. Responsible for
* decapsulating DataTreeChanged messages and dispatching their context to the user.
*/
final class DataTreeCohortActor extends AbstractUntypedActor {
- private static final Logger LOG = LoggerFactory.getLogger(DataTreeCohortActor.class);
private final CohortBehaviour<?> idleState = new Idle();
private final DOMDataTreeCommitCohort cohort;
private final CohortBehaviour<?> idleState = new Idle();
private final DOMDataTreeCommitCohort cohort;
+ private final YangInstanceIdentifier registeredPath;
private CohortBehaviour<?> currentState = idleState;
private CohortBehaviour<?> currentState = idleState;
- private DataTreeCohortActor(final DOMDataTreeCommitCohort cohort) {
+ private DataTreeCohortActor(final DOMDataTreeCommitCohort cohort
, final YangInstanceIdentifier registeredPath
) {
this.cohort = Preconditions.checkNotNull(cohort);
this.cohort = Preconditions.checkNotNull(cohort);
+ this.registeredPath = Preconditions.checkNotNull(registeredPath);
}
@Override
protected void handleReceive(final Object message) {
}
@Override
protected void handleReceive(final Object message) {
+ LOG.debug("handleReceive for cohort {} - currentState: {}, message: {}", cohort.getClass().getName(),
+ currentState, message);
+
currentState = currentState.handle(message);
}
currentState = currentState.handle(message);
}
@@
-48,7
+52,7
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
*
* @param <R> Reply message type
*/
*
* @param <R> Reply message type
*/
-
static abstract
class CommitProtocolCommand<R extends CommitReply> {
+
abstract static
class CommitProtocolCommand<R extends CommitReply> {
private final TransactionIdentifier txId;
private final TransactionIdentifier txId;
@@
-59,23
+63,29
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
protected CommitProtocolCommand(TransactionIdentifier txId) {
this.txId = Preconditions.checkNotNull(txId);
}
protected CommitProtocolCommand(TransactionIdentifier txId) {
this.txId = Preconditions.checkNotNull(txId);
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + " [txId=" + txId + "]";
+ }
}
static final class CanCommit extends CommitProtocolCommand<Success> {
}
static final class CanCommit extends CommitProtocolCommand<Success> {
- private final
DOMDataTreeCandidate candidate
;
+ private final
Collection<DOMDataTreeCandidate> candidates
;
private final ActorRef cohort;
private final SchemaContext schema;
private final ActorRef cohort;
private final SchemaContext schema;
- CanCommit(TransactionIdentifier txId, DOMDataTreeCandidate candidate, SchemaContext schema, ActorRef cohort) {
+ CanCommit(TransactionIdentifier txId, Collection<DOMDataTreeCandidate> candidates, SchemaContext schema,
+ ActorRef cohort) {
super(txId);
this.cohort = Preconditions.checkNotNull(cohort);
super(txId);
this.cohort = Preconditions.checkNotNull(cohort);
- this.candidate
= Preconditions.checkNotNull(candidate
);
+ this.candidate
s = Preconditions.checkNotNull(candidates
);
this.schema = Preconditions.checkNotNull(schema);
}
this.schema = Preconditions.checkNotNull(schema);
}
-
DOMDataTreeCandidate getCandidate
() {
- return candidate;
+
Collection<DOMDataTreeCandidate> getCandidates
() {
+ return candidate
s
;
}
SchemaContext getSchema() {
}
SchemaContext getSchema() {
@@
-86,9
+96,13
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
return cohort;
}
return cohort;
}
+ @Override
+ public String toString() {
+ return "CanCommit [txId=" + getTxId() + ", candidates=" + candidates + ", cohort=" + cohort + "]";
+ }
}
}
-
static abstract
class CommitReply {
+
abstract static
class CommitReply {
private final ActorRef cohortRef;
private final TransactionIdentifier txId;
private final ActorRef cohortRef;
private final TransactionIdentifier txId;
@@
-105,38
+119,42
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
final TransactionIdentifier getTxId() {
return txId;
}
final TransactionIdentifier getTxId() {
return txId;
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + " [txId=" + txId + ", cohortRef=" + cohortRef + "]";
+ }
}
static final class Success extends CommitReply {
}
static final class Success extends CommitReply {
-
public
Success(ActorRef cohortRef, TransactionIdentifier txId) {
+ Success(ActorRef cohortRef, TransactionIdentifier txId) {
super(cohortRef, txId);
}
super(cohortRef, txId);
}
-
}
static final class PreCommit extends CommitProtocolCommand<Success> {
}
static final class PreCommit extends CommitProtocolCommand<Success> {
-
public
PreCommit(TransactionIdentifier txId) {
+ PreCommit(TransactionIdentifier txId) {
super(txId);
}
}
static final class Abort extends CommitProtocolCommand<Success> {
super(txId);
}
}
static final class Abort extends CommitProtocolCommand<Success> {
-
public
Abort(TransactionIdentifier txId) {
+ Abort(TransactionIdentifier txId) {
super(txId);
}
}
static final class Commit extends CommitProtocolCommand<Success> {
super(txId);
}
}
static final class Commit extends CommitProtocolCommand<Success> {
-
public
Commit(TransactionIdentifier txId) {
+ Commit(TransactionIdentifier txId) {
super(txId);
}
}
super(txId);
}
}
- private
static abstract
class CohortBehaviour<E> {
+ private
abstract static
class CohortBehaviour<E> {
abstract Class<E> getHandledMessageType();
abstract Class<E> getHandledMessageType();
@@
-146,13
+164,18
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
} else if (message instanceof Abort) {
return abort();
}
} else if (message instanceof Abort) {
return abort();
}
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException(String.format("Unexpected message %s in cohort behavior %s",
+ message.getClass(), getClass().getSimpleName()));
}
abstract CohortBehaviour<?> abort();
abstract CohortBehaviour<?> process(E message);
}
abstract CohortBehaviour<?> abort();
abstract CohortBehaviour<?> process(E message);
+ @Override
+ public String toString() {
+ return getClass().getSimpleName();
+ }
}
private class Idle extends CohortBehaviour<CanCommit> {
}
private class Idle extends CohortBehaviour<CanCommit> {
@@
-163,10
+186,11
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
}
@Override
}
@Override
+ @SuppressWarnings("checkstyle:IllegalCatch")
CohortBehaviour<?> process(CanCommit message) {
final PostCanCommitStep nextStep;
try {
CohortBehaviour<?> process(CanCommit message) {
final PostCanCommitStep nextStep;
try {
- nextStep = cohort.canCommit(message.getTxId(), message.getCandidate(), message.getSchema()).get();
+ nextStep = cohort.canCommit(message.getTxId(), message.getCandidate
s
(), message.getSchema()).get();
} catch (final Exception e) {
getSender().tell(new Status.Failure(e), getSelf());
return this;
} catch (final Exception e) {
getSender().tell(new Status.Failure(e), getSelf());
return this;
@@
-179,7
+203,6
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
CohortBehaviour<?> abort() {
return this;
}
CohortBehaviour<?> abort() {
return this;
}
-
}
}
@@
-203,6
+226,7
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
}
@Override
}
@Override
+ @SuppressWarnings("checkstyle:IllegalCatch")
final CohortBehaviour<?> abort() {
try {
getStep().abort().get();
final CohortBehaviour<?> abort() {
try {
getStep().abort().get();
@@
-215,6
+239,10
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
return idleState;
}
return idleState;
}
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + " [txId=" + txId + ", step=" + step + "]";
+ }
}
private class PostCanCommit extends CohortStateWithStep<PreCommit, PostCanCommitStep> {
}
private class PostCanCommit extends CohortStateWithStep<PreCommit, PostCanCommitStep> {
@@
-229,6
+257,7
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
}
@Override
}
@Override
+ @SuppressWarnings("checkstyle:IllegalCatch")
CohortBehaviour<?> process(PreCommit message) {
final PostPreCommitStep nextStep;
try {
CohortBehaviour<?> process(PreCommit message) {
final PostPreCommitStep nextStep;
try {
@@
-250,6
+279,7
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
}
@Override
}
@Override
+ @SuppressWarnings("checkstyle:IllegalCatch")
CohortBehaviour<?> process(Commit message) {
try {
getStep().commit().get();
CohortBehaviour<?> process(Commit message) {
try {
getStep().commit().get();
@@
-268,7
+298,7
@@
final class DataTreeCohortActor extends AbstractUntypedActor {
}
}
- static Props props(final DOMDataTreeCommitCohort cohort) {
- return Props.create(DataTreeCohortActor.class, cohort);
+ static Props props(final DOMDataTreeCommitCohort cohort
, final YangInstanceIdentifier registeredPath
) {
+ return Props.create(DataTreeCohortActor.class, cohort
, registeredPath
);
}
}
}
}