Uploaded image for project: 'OpenFlowPlugin'
  1. OpenFlowPlugin
  2. OPNFLWPLUG-872

TransactionChainManager fails to recover from TransactionChain failure

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Resolution: Done
    • None
    • None
    • General
    • None
    • Operating System: All
      Platform: All

    • 8060

    Description

      2017-03-21 12:58:02,555 | ERROR | CommitFutures-2 | ExecutionList | 84 - com.google.guava - 18.0.0 | RuntimeException while executing runnable com.google.common.util.concurrent.Futures$6@4ba34019 with executor INSTANCE
      java.lang.IllegalStateException: Attempted to close chain with outstanding transaction PingPongTransaction

      {delegate=org.opendaylight.controller.cluster.databroker.DOMBrokerReadWriteTransaction@4f9cdd32}

      at com.google.common.base.Preconditions.checkState(Preconditions.java:197)[84:com.google.guava:18.0.0]
      at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.close(PingPongTransactionChain.java:373)[190:org.opendaylight.controller.sal-broker-impl:1.5.0.SNAPSHOT]
      at org.opendaylight.controller.md.sal.binding.impl.BindingDOMTransactionChainAdapter.close(BindingDOMTransactionChainAdapter.java:115)[192:org.opendaylight.controller.sal-binding-broker-impl:1.5.0.SNAPSHOT]
      at java.util.Optional.ifPresent(Optional.java:159)[:1.8.0_121]
      at org.opendaylight.openflowplugin.impl.device.TransactionChainManager.createTxChain(TransactionChainManager.java:84)[314:org.opendaylight.openflowplugin.impl:0.4.0.SNAPSHOT]
      at org.opendaylight.openflowplugin.impl.device.TransactionChainManager.recreateTxChain(TransactionChainManager.java:250)[314:org.opendaylight.openflowplugin.impl:0.4.0.SNAPSHOT]
      at org.opendaylight.openflowplugin.impl.device.TransactionChainManager.onTransactionChainFailed(TransactionChainManager.java:239)[314:org.opendaylight.openflowplugin.impl:0.4.0.SNAPSHOT]
      at org.opendaylight.controller.md.sal.binding.impl.BindingDOMTransactionChainAdapter.failTransactionChain(BindingDOMTransactionChainAdapter.java:110)[192:org.opendaylight.controller.sal-binding-broker-impl:1.5.0.SNAPSHOT]
      at org.opendaylight.controller.md.sal.binding.impl.BindingDOMTransactionChainAdapter.access$200(BindingDOMTransactionChainAdapter.java:31)[192:org.opendaylight.controller.sal-binding-broker-impl:1.5.0.SNAPSHOT]
      at org.opendaylight.controller.md.sal.binding.impl.BindingDOMTransactionChainAdapter$3.onFailure(BindingDOMTransactionChainAdapter.java:91)[192:org.opendaylight.controller.sal-binding-broker-impl:1.5.0.SNAPSHOT]
      at com.google.common.util.concurrent.Futures$6.run(Futures.java:1310)[84:com.google.guava:18.0.0]
      at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:457)[84:com.google.guava:18.0.0]
      at com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)[84:com.google.guava:18.0.0]
      at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)[84:com.google.guava:18.0.0]
      at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:202)[84:com.google.guava:18.0.0]
      at com.google.common.util.concurrent.SettableFuture.setException(SettableFuture.java:68)[84:com.google.guava:18.0.0]
      at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransaction.onFailure(PingPongTransaction.java:65)[190:org.opendaylight.controller.sal-broker-impl:1.5.0.SNAPSHOT]
      at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.transactionFailed(PingPongTransactionChain.java:293)[190:org.opendaylight.controller.sal-broker-impl:1.5.0.SNAPSHOT]
      at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain$2.onFailure(PingPongTransactionChain.java:243)[190:org.opendaylight.controller.sal-broker-impl:1.5.0.SNAPSHOT]
      at com.google.common.util.concurrent.Futures$6.run(Futures.java:1310)[84:com.google.guava:18.0.0]
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_121]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_121]
      at java.lang.Thread.run(Thread.java:745)[:1.8.0_121]

      This is indicative of the failure callback not being properly synchronized with other paths interacting with the chain (i.e. a transaction is actively open by another thread).

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            rovarga Robert Varga
            rovarga Robert Varga
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: