[OVSDB-387] ConflictingModificationAppliedException: Node was created by other transaction Created: 14/Dec/16  Updated: 02/Feb/17  Resolved: 02/Feb/17

Status: Resolved
Project: ovsdb
Component/s: Southbound.Open_vSwitch
Affects Version/s: unspecified
Fix Version/s: None

Type: Bug
Reporter: Sam Hague Assignee: Anil Vishnoi
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Attachments: File odl1_karaf.tar.xz    
External issue ID: 7373

 Description   

2016-12-14 13:27:35,741 | INFO | ult-dispatcher-5 | OvsdbConnectionService | 247 - org.opendaylight.ovsdb.library - 1.3.2.SNAPSHOT | startOvsdbManager: Starting
2016-12-14 13:27:35,769 | INFO | ult-dispatcher-6 | OvsdbConnectionService | 247 - org.opendaylight.ovsdb.library - 1.3.2.SNAPSHOT | registerConnectionListener: registering OvsdbConnectionManager
2016-12-14 13:27:35,969 | WARN | lt-dispatcher-21 | ShardDataTree | 176 - org.opendaylight.controller.sal-distributed-datastore - 1.4.2.SNAPSHOT | member-1-shard-topology-config: Store Tx member-1-datastore-config-fe-0-txn-3: Conflicting modification for path /(urn:TBD:params:xml:ns:yang:network-topology?revision=2013-10-21)network-topology.
2016-12-14 13:27:35,972 | ERROR | ult-dispatcher-6 | LocalThreePhaseCommitCohort | 176 - org.opendaylight.controller.sal-distributed-datastore - 1.4.2.SNAPSHOT | Failed to prepare transaction member-1-datastore-config-fe-0-txn-3 on backend
OptimisticLockFailedException

{message=Optimistic lock failed., errorList=[RpcError [message=Optimistic lock failed., severity=ERROR, errorType=APPLICATION, tag=resource-denied, applicationTag=null, info=null, cause=org.opendaylight.yangtools.yang.data.api.schema.tree.ConflictingModificationAppliedException: Node was created by other transaction.]]}

at org.opendaylight.controller.cluster.datastore.ShardDataTree.processNextTransaction(ShardDataTree.java:532)[176:org.opendaylight.controller.sal-distributed-datastore:1.4.2.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.ShardDataTree.finishCommit(ShardDataTree.java:623)[176:org.opendaylight.controller.sal-distributed-datastore:1.4.2.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.ShardDataTree.payloadReplicationComplete(ShardDataTree.java:358)[176:org.opendaylight.controller.sal-distributed-datastore:1.4.2.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.ShardDataTree.applyReplicatedPayload(ShardDataTree.java:338)[176:org.opendaylight.controller.sal-distributed-datastore:1.4.2.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.Shard.applyState(Shard.java:571)[176:org.opendaylight.controller.sal-distributed-datastore:1.4.2.SNAPSHOT]
at org.opendaylight.controller.cluster.raft.RaftActor.handleCommand(RaftActor.java:240)[171:org.opendaylight.controller.sal-akka-raft:1.4.2.SNAPSHOT]
at org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor.onReceiveCommand(AbstractUntypedPersistentActor.java:29)[170:org.opendaylight.controller.sal-clustering-commons:1.4.2.SNAPSHOT]
at akka.persistence.UntypedPersistentActor.onReceive(PersistentActor.scala:170)[164:com.typesafe.akka.persistence:2.4.7]
at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:97)[170:org.opendaylight.controller.sal-clustering-commons:1.4.2.SNAPSHOT]
at akka.actor.ActorCell$$anonfun$become$1.applyOrElse(ActorCell.scala:544)[158:com.typesafe.akka.actor:2.4.7]
at akka.actor.Actor$class.aroundReceive(Actor.scala:484)[158:com.typesafe.akka.actor:2.4.7]
at akka.persistence.UntypedPersistentActor.akka$persistence$Eventsourced$$super$aroundReceive(PersistentActor.scala:168)[164:com.typesafe.akka.persistence:2.4.7]
at akka.persistence.Eventsourced$$anon$1.stateReceive(Eventsourced.scala:633)[164:com.typesafe.akka.persistence:2.4.7]
at akka.persistence.Eventsourced$class.aroundReceive(Eventsourced.scala:179)[164:com.typesafe.akka.persistence:2.4.7]
at akka.persistence.UntypedPersistentActor.aroundReceive(PersistentActor.scala:168)[164:com.typesafe.akka.persistence:2.4.7]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)[158:com.typesafe.akka.actor:2.4.7]
at akka.actor.ActorCell.invoke(ActorCell.scala:495)[158:com.typesafe.akka.actor:2.4.7]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)[158:com.typesafe.akka.actor:2.4.7]
at akka.dispatch.Mailbox.run(Mailbox.scala:224)[158:com.typesafe.akka.actor:2.4.7]
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)[158:com.typesafe.akka.actor:2.4.7]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[154:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[154:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[154:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[154:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
Caused by: org.opendaylight.yangtools.yang.data.api.schema.tree.ConflictingModificationAppliedException: Node was created by other transaction.
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkWriteApplicable(SchemaAwareApplyOperation.java:174)[80:org.opendaylight.yangtools.yang-data-impl:1.0.2.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:128)[80:org.opendaylight.yangtools.yang-data-impl:1.0.2.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.StructuralContainerModificationStrategy.checkApplicable(StructuralContainerModificationStrategy.java:99)[80:org.opendaylight.yangtools.yang-data-impl:1.0.2.SNAPSHOT]
at org.o



 Comments   
Comment by Sam Hague [ 14/Dec/16 ]

Attachment odl1_karaf.tar.xz has been added with description: karaf.log

Comment by Anil Vishnoi [ 14/Dec/16 ]

sam, do you see this issue when both ovsdb southbound plugin and hardware vtep plugin both are loaded together? or you see this issue with just ovsdb southbound plugin as well?

Comment by Anil Vishnoi [ 15/Dec/16 ]

stable/boron:https://git.opendaylight.org/gerrit/49398
master : https://git.opendaylight.org/gerrit/49399

Comment by Anil Vishnoi [ 15/Dec/16 ]

Ovsdb/Hwvtep plugin creates respective topology under network-topology/topology
and also they make a check if the parent node (network-topology) exist or not.
If not they create the root node. In a scenario where user loads both the
plugin together, their is a possibility that both the plugin can try to
create the network-topology as the same time and one of them will end up
with ConflictingModificationAppliedException. To resolve this scenario
this patch avoid the explcit create of the parent node, and uses the md-sal
PUT api that creates the missing parents. Although it's slow compared to
the other version of PUT api, but given that it's one time operation
at warm up time, it of not much concern.

Generated at Wed Feb 07 20:36:16 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.