Description
If you cancel DOMForwardedWriteTransaction after an exception thrown by the backed transaction ready or submit methods, you run into an infinite loop.
This was encountered on an instance where the backed transaction threw an IllegalArgumentException on ready due to mandatory data missing:
java.lang.IllegalArgumentException: Node (urn:cisco:params:xml:ns:yang:sfc-rsp?revision=2014-07-01)rendered-service-path[{(urn:cisco:params:xml:ns:yang:sfc-rsp?revision=2014-07-01)name=RSP1}] is missing mandatory descendant /(urn:cisco:params:xml:ns:yang:sfc-rsp?revision=2014-07-01)reverse-path
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:434)
at org.opendaylight.yangtools.yang.data.impl.schema.tree.MandatoryLeafEnforcer$Strict.enforceOnData(MandatoryLeafEnforcer.java:44)
at org.opendaylight.yangtools.yang.data.impl.schema.tree.ListEntryModificationStrategy.verifyStructure(ListEntryModificationStrategy.java:34)
at org.opendaylight.yangtools.yang.data.impl.schema.tree.ModifiedNode.seal(ModifiedNode.java:283)
at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractReadyIterator.process(AbstractReadyIterator.java:47)
at org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeModification.ready(InMemoryDataTreeModification.java:285)
at org.opendaylight.controller.sal.core.spi.data.SnapshotBackedWriteTransaction.ready(SnapshotBackedWriteTransaction.java:141)
at org.opendaylight.controller.md.sal.dom.broker.impl.DOMForwardedWriteTransaction.submit(DOMForwardedWriteTransaction.java:148)
at org.opendaylight.controller.md.sal.binding.impl.AbstractWriteTransaction.doSubmit(AbstractWriteTransaction.java:134)
at org.opendaylight.controller.md.sal.binding.impl.BindingDOMWriteTransactionAdapter.submit(BindingDOMWriteTransactionAdapter.java:81)
at org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl.callWithNewWriteOnlyTransactionAndSubmit(ManagedNewTransactionRunnerImpl.java:46)
at org.opendaylight.genius.infra.RetryingManagedNewTransactionRunnerImpl.callWithNewWriteOnlyTransactionAndSubmit(RetryingManagedNewTransactionRunnerImpl.java:64)
at org.opendaylight.genius.infra.RetryingManagedNewTransactionRunnerImpl.callWithNewWriteOnlyTransactionAndSubmit(RetryingManagedNewTransactionRunnerImpl.java:57)
at org.opendaylight.genius.infra.RetryingManagedNewTransactionRunner.callWithNewWriteOnlyTransactionAndSubmit(RetryingManagedNewTransactionRunner.java:41)
at org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker.syncWrite(SingleTransactionDataBroker.java:194)
at org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker.syncWrite(SingleTransactionDataBroker.java:186)
at org.opendaylight.genius.mdsalutil.MDSALUtil.syncWrite(MDSALUtil.java:581)
at org.opendaylight.netvirt.sfc.classifier.providers.SfcProviderTest.storeRsp(SfcProviderTest.java:172)
at org.opendaylight.netvirt.sfc.classifier.providers.SfcProviderTest.getRenderedServicePath(SfcProviderTest.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Attachments
Issue Links
- is duplicated by
-
MDSAL-79 Controller stop fails
- Resolved
| # | Subject | Branch | Project | Status | CR | V |
|---|---|---|---|---|---|---|
| 67804,7 | Fix infinite loop on cancel transaction | master | controller | Status: MERGED | +2 | +1 |
| 67914,3 | Delay snapshot backed transaction ready error | master | controller | Status: MERGED | +2 | +1 |
| 68077,1 | Fix infinite loop on cancel transaction | stable/nitrogen | controller | Status: MERGED | +2 | +1 |
| 68078,2 | Fix infinite loop on cancel transaction | stable/carbon | controller | Status: MERGED | +2 | +1 |
| 68098,1 | Fix infinite loop on cancel transaction | master | mdsal | Status: MERGED | +2 | +1 |
| 68111,1 | Fix infinite loop on cancel transaction | stable/nitrogen | mdsal | Status: MERGED | +2 | +1 |
| 68112,2 | Fix infinite loop on cancel transaction | stable/carbon | mdsal | Status: MERGED | +2 | +1 |
| 68125,1 | Delay snapshot backed transaction ready error | master | mdsal | Status: MERGED | +2 | +1 |