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

Client Failover handling incomplete RetryOperations cannot be nested and No-opOperations should be removed

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Later
    • M2.1
    • JIRA Cleanup
    • JMS AMQP 0-x
    • None

    Description

      Summary:

      It failover occurs just as a consumer is being created be it a consumer or browser then due to the way we do Failover the following exception can occur. The error log: "No-op support should only be used where the caller is certain fail-over cannot occur." worries me as to be certain you cannot be doing ANY sync writes as failover could occur during the return msg. Now the NoopSupport is used in:

      bindQueue
      commit
      declareExchange
      declareQueue
      getQueuDepth

      In all of these cases a syncWrite is performed so if timed correctly a failover exception could occur.

      java.lang.IllegalStateException: Fail-over interupted no-op failover support. No-op support should only be used where the caller is certain fail-over cannot occur.
      at org.apache.qpid.client.failover.FailoverNoopSupport.execute(FailoverNoopSupport.java:71)
      at org.apache.qpid.client.AMQSession.declareExchange(AMQSession.java:2370)
      at org.apache.qpid.client.AMQSession.declareExchange(AMQSession.java:2284)
      at org.apache.qpid.client.AMQSession.registerConsumer(AMQSession.java:2556)
      at org.apache.qpid.client.AMQSession.access$1600(AMQSession.java:105)
      at org.apache.qpid.client.AMQSession$5.execute(AMQSession.java:1762)
      at org.apache.qpid.client.AMQSession$5.execute(AMQSession.java:1732)
      at org.apache.qpid.client.failover.FailoverRetrySupport.execute(FailoverRetrySupport.java:119)
      at org.apache.qpid.client.AMQSession.createConsumerImpl(AMQSession.java:1730)
      at org.apache.qpid.client.AMQSession.createConsumer(AMQSession.java:861)
      at org.apache.qpid.test.client.QueueBrowserAutoAckTest.validate(QueueBrowserAutoAckTest.java:271)
      at org.apache.qpid.test.client.QueueBrowserAutoAckTest.testFailoverAsQueueBrowserCreated(QueueBrowserAutoAckTest.java:459)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
      Caused by: org.apache.qpid.client.failover.FailoverException: Failing over about to start
      at org.apache.qpid.client.failover.FailoverHandler.run(FailoverHandler.java:123)
      at java.lang.Thread.run(Thread.java:619)

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              ritchiem Martin Ritchie
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m