X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fentityownership%2FEntityOwnershipShardCommitCoordinator.java;h=5118de46c119a22bafa98258bd9afc8a052437fc;hb=bb1891e328feee08ccd29c96034e967f1eeccece;hp=6c15ef6ed05cb2fb41b7b837e3655b0fef167beb;hpb=81cc10db365aa8cde38a3d2777488bb83bd69ef5;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipShardCommitCoordinator.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipShardCommitCoordinator.java index 6c15ef6ed0..5118de46c1 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipShardCommitCoordinator.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipShardCommitCoordinator.java @@ -44,7 +44,7 @@ class EntityOwnershipShardCommitCoordinator { boolean handleMessage(Object message, EntityOwnershipShard shard) { boolean handled = true; - if(CommitTransactionReply.SERIALIZABLE_CLASS.isInstance(message)) { + if(CommitTransactionReply.isSerializedType(message)) { // Successful reply from a local commit. inflightCommitSucceeded(shard); } else if(message instanceof akka.actor.Status.Failure) { @@ -140,18 +140,26 @@ class EntityOwnershipShardCommitCoordinator { } void commitModification(Modification modification, EntityOwnershipShard shard) { + BatchedModifications modifications = newBatchedModifications(); + modifications.addModification(modification); + commitModifications(modifications, shard); + } + + void commitModifications(BatchedModifications modifications, EntityOwnershipShard shard) { + if(modifications.getModifications().isEmpty()) { + return; + } + boolean hasLeader = shard.hasLeader(); if(inflightCommit != null || !hasLeader) { if(log.isDebugEnabled()) { - log.debug("{} - adding modification to pending", + log.debug("{} - adding modifications to pending", (inflightCommit != null ? "A commit is inflight" : "No shard leader")); } - pendingModifications.add(modification); + pendingModifications.addAll(modifications.getModifications()); } else { - inflightCommit = newBatchedModifications(); - inflightCommit.addModification(modification); - + inflightCommit = modifications; shard.tryCommitModifications(inflightCommit); } } @@ -179,7 +187,7 @@ class EntityOwnershipShardCommitCoordinator { inflightCommit = newBatchedModifications; } - private BatchedModifications newBatchedModifications() { + BatchedModifications newBatchedModifications() { BatchedModifications modifications = new BatchedModifications( TransactionIdentifier.create(localMemberName, ++transactionIDCounter).toString(), DataStoreVersions.CURRENT_VERSION, "");