Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-8309

[Broker-J] [AMQP 0-8..0-91] Concurrent transaction commit can fail with: Cannot commit transaction with state 'DISCHARGING'

    Details

      Description

      Concurrent transaction commit can end-up in error: Cannot commit transaction with state 'DISCHARGING'. The stack trace like the one below is reported into Qpid broker logs:

      2019-05-06 03:32:05,960 WARN  [IO-/127.0.0.1:5672] (o.a.q.s.p.v.AMQPConnection_0_8Impl) - Unexpected exception
      java.lang.IllegalStateException: Cannot commit transaction with state 'DISCHARGING'
              at org.apache.qpid.server.txn.LocalTransaction.commitAsync(LocalTransaction.java:427)
              at org.apache.qpid.server.protocol.v0_8.AMQChannel.commit(AMQChannel.java:1092)
              at org.apache.qpid.server.protocol.v0_8.AMQChannel.receiveTxCommit(AMQChannel.java:3385)
              at org.apache.qpid.server.protocol.v0_8.ServerDecoder.processMethod(ServerDecoder.java:230)
              at org.apache.qpid.server.protocol.v0_8.AMQDecoder.processFrame(AMQDecoder.java:203)
              at org.apache.qpid.server.protocol.v0_8.BrokerDecoder.doProcessFrame(BrokerDecoder.java:141)
              at org.apache.qpid.server.protocol.v0_8.BrokerDecoder.processFrame(BrokerDecoder.java:65)
              at org.apache.qpid.server.protocol.v0_8.AMQDecoder.processInput(AMQDecoder.java:185)
              at org.apache.qpid.server.protocol.v0_8.BrokerDecoder$1.run(BrokerDecoder.java:104)
              at org.apache.qpid.server.protocol.v0_8.BrokerDecoder$1.run(BrokerDecoder.java:97)
              at java.security.AccessController.doPrivileged(Native Method)
              at org.apache.qpid.server.protocol.v0_8.BrokerDecoder.processAMQPFrames(BrokerDecoder.java:96)
              at org.apache.qpid.server.protocol.v0_8.AMQDecoder.decode(AMQDecoder.java:118)
      

      Transaction state checks added as part of QPID-7541 introduced a regression for asynchronous way of committing transactions used for AMQP 0-8..0-91. The asynchronous transaction needs to be synced before the state check is performed.

        Attachments

          Activity

            People

            • Assignee:
              orudyy Alex Rudyy
              Reporter:
              orudyy Alex Rudyy
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: