Qpid
  1. Qpid
  2. QPID-2422

DerbyStore does not persist queue exclusivity or arguments

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: M3, M4, 0.5, 0.6
    • Fix Version/s: 0.7
    • Component/s: None
    • Labels:

      Description

      Whilst investigating enabling the tests in qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ct/DurableSubscriberTest.java to run against the Java broker, it was observed (stacktrace below) that after restarting the broker it was not possible to recreate a durable subscription as the recovered queue had lost its exclusivity during the restart process, and the client connected via 0-91 was unable to redeclare the queue as a result of an exclusivity mismatch between the request and the existing queue.

      Investigating this has found this to be bec ause we dont persist the queue exclusivity as set in the QueueDeclare body. The DebyStore also does not persist the queue arguments it is given.

      Error registering consumer: org.apache.qpid.AMQChannelClosedException: Error: Cannot re-declare queue 'clientid:dursub' with different exclusivity (was: false requested true) [error code 405: Already exists] [error code 405: Already exists]
      javax.jms.JMSException: Error registering consumer: org.apache.qpid.AMQChannelClosedException: Error: Cannot re-declare queue 'clientid:dursub' with different exclusivity (was: false requested true) [error code 405: Already exists] [error code 405: Already exists]
      at org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:1800)
      at org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:1744)
      at org.apache.qpid.client.AMQConnectionDelegate_8_0.executeRetrySupport(AMQConnectionDelegate_8_0.java:290)
      at org.apache.qpid.client.AMQConnection.executeRetrySupport(AMQConnection.java:765)
      at org.apache.qpid.client.failover.FailoverRetrySupport.execute(FailoverRetrySupport.java:102)
      at org.apache.qpid.client.AMQSession.createConsumerImpl(AMQSession.java:1742)
      at org.apache.qpid.client.AMQSession.createConsumer(AMQSession.java:911)
      at org.apache.qpid.client.AMQSession_0_8.createDurableSubscriber(AMQSession_0_8.java:502)
      at org.apache.qpid.client.AMQTopicSessionAdaptor.createDurableSubscriber(AMQTopicSessionAdaptor.java:73)
      <snip>

        Activity

        Robbie Gemmell created issue -
        Robbie Gemmell made changes -
        Field Original Value New Value
        Summary DerbyStore does not persist queue arguments DerbyStore does not persist queue exclusivity or arguments
        Assignee Robbie Gemmell [ gemmellr ]
        Fix Version/s 0.7 [ 12314455 ]
        Affects Version/s 0.5 [ 12313597 ]
        Affects Version/s M4 [ 12313279 ]
        Affects Version/s M3 [ 12312117 ]
        Description Whilst investigating enabling the tests in qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ct/DurableSubscriberTest.java to run against the Java broker, it was observed (stacktrace below) that after restarting the broker it was not possible to recreate a durable subscription as the recovered queue had lost its exclusivity during the restart process, and the client connected via 0-91 was unable to redeclare the queue as a result of an exclusivity mismatch between the request and the existing queue. Investigating this suggests the cause to be that the DebyStore does not persist the queue arguments it is given.


        Error registering consumer: org.apache.qpid.AMQChannelClosedException: Error: Cannot re-declare queue 'clientid:dursub' with different exclusivity (was: false requested true) [error code 405: Already exists] [error code 405: Already exists]
        javax.jms.JMSException: Error registering consumer: org.apache.qpid.AMQChannelClosedException: Error: Cannot re-declare queue 'clientid:dursub' with different exclusivity (was: false requested true) [error code 405: Already exists] [error code 405: Already exists]
                at org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:1800)
                at org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:1744)
                at org.apache.qpid.client.AMQConnectionDelegate_8_0.executeRetrySupport(AMQConnectionDelegate_8_0.java:290)
                at org.apache.qpid.client.AMQConnection.executeRetrySupport(AMQConnection.java:765)
                at org.apache.qpid.client.failover.FailoverRetrySupport.execute(FailoverRetrySupport.java:102)
                at org.apache.qpid.client.AMQSession.createConsumerImpl(AMQSession.java:1742)
                at org.apache.qpid.client.AMQSession.createConsumer(AMQSession.java:911)
                at org.apache.qpid.client.AMQSession_0_8.createDurableSubscriber(AMQSession_0_8.java:502)
                at org.apache.qpid.client.AMQTopicSessionAdaptor.createDurableSubscriber(AMQTopicSessionAdaptor.java:73)
        <snip>
        Whilst investigating enabling the tests in qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ct/DurableSubscriberTest.java to run against the Java broker, it was observed (stacktrace below) that after restarting the broker it was not possible to recreate a durable subscription as the recovered queue had lost its exclusivity during the restart process, and the client connected via 0-91 was unable to redeclare the queue as a result of an exclusivity mismatch between the request and the existing queue.

        Investigating this has found this to be bec ause we dont persist the queue exclusivity as set in the QueueDeclare body. The DebyStore also does not persist the queue arguments it is given.


        Error registering consumer: org.apache.qpid.AMQChannelClosedException: Error: Cannot re-declare queue 'clientid:dursub' with different exclusivity (was: false requested true) [error code 405: Already exists] [error code 405: Already exists]
        javax.jms.JMSException: Error registering consumer: org.apache.qpid.AMQChannelClosedException: Error: Cannot re-declare queue 'clientid:dursub' with different exclusivity (was: false requested true) [error code 405: Already exists] [error code 405: Already exists]
                at org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:1800)
                at org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:1744)
                at org.apache.qpid.client.AMQConnectionDelegate_8_0.executeRetrySupport(AMQConnectionDelegate_8_0.java:290)
                at org.apache.qpid.client.AMQConnection.executeRetrySupport(AMQConnection.java:765)
                at org.apache.qpid.client.failover.FailoverRetrySupport.execute(FailoverRetrySupport.java:102)
                at org.apache.qpid.client.AMQSession.createConsumerImpl(AMQSession.java:1742)
                at org.apache.qpid.client.AMQSession.createConsumer(AMQSession.java:911)
                at org.apache.qpid.client.AMQSession_0_8.createDurableSubscriber(AMQSession_0_8.java:502)
                at org.apache.qpid.client.AMQTopicSessionAdaptor.createDurableSubscriber(AMQTopicSessionAdaptor.java:73)
        <snip>
        Robbie Gemmell made changes -
        Status Open [ 1 ] In Progress [ 3 ]
        Robbie Gemmell made changes -
        Status In Progress [ 3 ] Ready To Review [ 10006 ]
        Hide
        Marnie McCormack added a comment -

        Reviewed non-test classes ok.

        Show
        Marnie McCormack added a comment - Reviewed non-test classes ok.
        Marnie McCormack made changes -
        Status Ready To Review [ 10006 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Robbie Gemmell made changes -
        Labels derbystore
        Robbie Gemmell made changes -
        Component/s Java Broker Derby Store [ 12312426 ]
        Transition Time In Source Status Execution Times Last Executer Last Execution Date
        Open Open In Progress In Progress
        82d 22h 32m 1 Robbie Gemmell 19/May/10 15:23
        In Progress In Progress Reviewable Reviewable
        25s 1 Robbie Gemmell 19/May/10 15:23
        Reviewable Reviewable Resolved Resolved
        196d 21h 42m 1 Marnie McCormack 02/Dec/10 12:05

          People

          • Assignee:
            Robbie Gemmell
            Reporter:
            Robbie Gemmell
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development