[NETVIRT-1040] Conflicting modification for path /(urn:opendaylight:netvirt:natservice?revision=2016-01-11)napt-switches/router-to-napt-switch/router-to-napt-switch - router-name=00b6b710-d4d3-4b51-aa3c-1f716e72c36c} Created: 12/Dec/17  Updated: 06/Jul/18  Resolved: 06/Jul/18

Status: Resolved
Project: netvirt
Component/s: natservice
Affects Version/s: Oxygen
Fix Version/s: Oxygen-SR3, Fluorine

Type: Bug Priority: Medium
Reporter: Sam Hague Assignee: Chetan Arakere Gowdru
Resolution: Done Votes: 0
Labels: csit:exception
Remaining Estimate: 0 minutes
Time Spent: 6 hours
Original Estimate: Not Specified


 Description   

https://logs.opendaylight.org/releng/jenkins092/netvirt-csit-1node-openstack-ocata-upstream-stateful-oxygen/523/odl_1/odl1_karaf.log.gz

2017-12-12 02:46:56,097 | WARN  | rd-dispatcher-38 | ShardDataTree                    | 217 - org.opendaylight.controller.sal-distributed-datastore - 1.7.0.SNAPSHOT | member-1-shard-default-config: Store Tx member-1-datastore-config-fe-0-txn-47646-0: Conflicting modification for path /(urn:opendaylight:netvirt:natservice?revision=2016-01-11)napt-switches/router-to-napt-switch/router-to-napt-switch[{(urn:opendaylight:netvirt:natservice?revision=2016-01-11)router-name=00b6b710-d4d3-4b51-aa3c-1f716e72c36c}].
2017-12-12 02:46:56,099 | WARN  | ult-dispatcher-2 | ConcurrentDOMDataBroker          | 217 - org.opendaylight.controller.sal-distributed-datastore - 1.7.0.SNAPSHOT | Tx: DOM-79161 Error during phase CAN_COMMIT, starting Abort
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.lambda$processNextPendingTransaction$0(ShardDataTree.java:731)[217:org.opendaylight.controller.sal-distributed-datastore:1.7.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.ShardDataTree.processNextPending(ShardDataTree.java:769)[217:org.opendaylight.controller.sal-distributed-datastore:1.7.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.ShardDataTree.processNextPendingTransaction(ShardDataTree.java:716)[217:org.opendaylight.controller.sal-distributed-datastore:1.7.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.ShardDataTree.startCanCommit(ShardDataTree.java:799)[217:org.opendaylight.controller.sal-distributed-datastore:1.7.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.SimpleShardDataTreeCohort.canCommit(SimpleShardDataTreeCohort.java:90)[217:org.opendaylight.controller.sal-distributed-datastore:1.7.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.CohortEntry.canCommit(CohortEntry.java:97)[217:org.opendaylight.controller.sal-distributed-datastore:1.7.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.ShardCommitCoordinator.handleCanCommit(ShardCommitCoordinator.java:236)[217:org.opendaylight.controller.sal-distributed-datastore:1.7.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.ShardCommitCoordinator.handleReadyLocalTransaction(ShardCommitCoordinator.java:200)[217:org.opendaylight.controller.sal-distributed-datastore:1.7.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.Shard.handleReadyLocalTransaction(Shard.java:731)[217:org.opendaylight.controller.sal-distributed-datastore:1.7.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.Shard.handleNonRaftCommand(Shard.java:333)[217:org.opendaylight.controller.sal-distributed-datastore:1.7.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.raft.RaftActor.handleCommand(RaftActor.java:270)[202:org.opendaylight.controller.sal-akka-raft:1.7.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor.onReceiveCommand(AbstractUntypedPersistentActor.java:44)[210:org.opendaylight.controller.sal-clustering-commons:1.7.0.SNAPSHOT]
	at akka.persistence.UntypedPersistentActor.onReceive(PersistentActor.scala:170)[37:com.typesafe.akka.persistence:2.4.18]
	at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:104)[210:org.opendaylight.controller.sal-clustering-commons:1.7.0.SNAPSHOT]
	at akka.actor.ActorCell$$anonfun$become$1.applyOrElse(ActorCell.scala:544)[34:com.typesafe.akka.actor:2.4.18]
	at akka.actor.Actor$class.aroundReceive(Actor.scala:502)[34:com.typesafe.akka.actor:2.4.18]
	at akka.persistence.UntypedPersistentActor.akka$persistence$Eventsourced$$super$aroundReceive(PersistentActor.scala:168)[37:com.typesafe.akka.persistence:2.4.18]
	at akka.persistence.Eventsourced$$anon$1.stateReceive(Eventsourced.scala:727)[37:com.typesafe.akka.persistence:2.4.18]
	at akka.persistence.Eventsourced$class.aroundReceive(Eventsourced.scala:183)[37:com.typesafe.akka.persistence:2.4.18]
	at akka.persistence.UntypedPersistentActor.aroundReceive(PersistentActor.scala:168)[37:com.typesafe.akka.persistence:2.4.18]
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)[34:com.typesafe.akka.actor:2.4.18]
	at akka.actor.ActorCell.invoke(ActorCell.scala:495)[34:com.typesafe.akka.actor:2.4.18]
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)[34:com.typesafe.akka.actor:2.4.18]
	at akka.dispatch.Mailbox.run(Mailbox.scala:224)[34:com.typesafe.akka.actor:2.4.18]
	at akka.dispatch.Mailbox.exec(Mailbox.scala:234)[34:com.typesafe.akka.actor:2.4.18]
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[417:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[417:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[417:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[417:org.scala-lang.scala-library:2.11.11.v20170413-090219-8a413ba7cc]
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)[398:org.opendaylight.yangtools.yang-data-impl:1.2.0]
	at org.opendaylight.yangtools.yang.data.impl.schema


 Comments   
Comment by Sam Hague [ 08/Jun/18 ]

Seen again: https://logs.opendaylight.org/releng/vex-yul-odl-jenkins-1/netvirt-csit-1node-openstack-queens-upstream-stateful-oxygen/785/odl_1/odl1_exceptions.txt.gz

Comment by Chetan Arakere Gowdru [ 21/Jun/18 ]

The occurance of this issue is due to ExternalRouterListener.remove() and RouterDpnChangeListener.remove() both attempting to update odl-nat:napt-switches DS simultaneously. 

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