-
Bug
-
Resolution: Unresolved
-
Medium
-
None
-
None
Running tests NetconfDeficeTopologyAdapterIntegrationTest class in different setups gives us inconsistent outcome
e.g
`mvn clean install -Dtest=NetconfDeficeTopologyAdapterIntegrationTest,NetconfDeviceTopologyAdapterTest test` or `mvn clean install` inside netconf-topology package ->
[ERROR] Tests run: 3, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 2.582 s <<< FAILURE! -- in org.opendaylight.netconf.topology.spi.NetconfDeficeTopologyAdapterIntegrationTest [ERROR] org.opendaylight.netconf.topology.spi.NetconfDeficeTopologyAdapterIntegrationTest.testDeviceAugmentedNodePresence -- Time elapsed: 0.616 s <<< ERROR! java.util.concurrent.ExecutionException: 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.tree.api.ConflictingModificationAppliedException: Node was created by other transaction.]]} at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:592) at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:467) at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:119) at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:75) at com.google.common.util.concurrent.ForwardingFluentFuture.get(ForwardingFluentFuture.java:75) at org.opendaylight.netconf.topology.spi.NetconfDeficeTopologyAdapterIntegrationTest.testDeviceAugmentedNodePresence(NetconfDeficeTopologyAdapterIntegrationTest.java:160) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Caused by: 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.tree.api.ConflictingModificationAppliedException: Node was created by other transaction.]]} at org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort.canCommit(InMemoryDOMStoreThreePhaseCommitCohort.java:75) at org.opendaylight.mdsal.dom.broker.CommitCoordinationTask.canCommitBlocking(CommitCoordinationTask.java:101) at org.opendaylight.mdsal.dom.broker.CommitCoordinationTask.call(CommitCoordinationTask.java:71) at org.opendaylight.mdsal.dom.broker.CommitCoordinationTask$WithTracker.call(CommitCoordinationTask.java:43) at org.opendaylight.mdsal.dom.broker.CommitCoordinationTask$WithTracker.call(CommitCoordinationTask.java:29) at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131) at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:76) at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: org.opendaylight.yangtools.yang.data.tree.api.ConflictingModificationAppliedException: Node was created by other transaction. at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkConflicting(SchemaAwareApplyOperation.java:77) at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkWriteApplicable(SchemaAwareApplyOperation.java:180) at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:110) at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:409) at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:368) at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:109) at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:409) at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:368) at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:109) at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:409) at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:368) at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:109) at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:409) at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:368) at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:109) at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:409) at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:368) at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:109) at org.opendaylight.yangtools.yang.data.tree.impl.AbstractDataTreeTip.validate(AbstractDataTreeTip.java:31) at org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore.validate(InMemoryDOMDataStore.java:180) at org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort.canCommit(InMemoryDOMStoreThreePhaseCommitCohort.java:68) ... 10 more [INFO] [INFO] Results: [INFO] [ERROR] Errors: [ERROR] NetconfDeficeTopologyAdapterIntegrationTest.testDeviceAugmentedNodePresence:160 ยป Execution 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.tree.api.ConflictingModificationAppliedException: Node was created by other transaction.]]} [INFO]
Also, https://git.opendaylight.org/gerrit/c/netconf/+/110962 patch demonstrates that
during the integration testing phase of the NetconfDeviceTopologyAdapter, a specific issue was identified with the DOMDataTreeWriteTransaction#put method.When executing tests in a predefined order using the @Order annotation,the put method unexpectedly throws an error. This issue does not occur with the merge operation, which executes successfully under the same conditions.
Running a single test class gives a different result `mvn clean install -Dtest=NetconfDeficeTopologyAdapterIntegrationTest test`
does not give such issues
- blocks
-
NETCONF-1235 NPE on topology PUT device without credentials
- In Review