Qpid
  1. Qpid
  2. QPID-4053

Performance Test Framework: QueueDelete can timeout if test ends when too many unprocessed messages remain on test queue

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 0.17
    • Fix Version/s: 0.19
    • Component/s: Java Performance Tests
    • Labels:
      None

      Description

      There is a problem in the new Performance Test Framework. If a test utilising the maxiumumDuration feature completes with too many messages left on a queue (as would be the case where number of producers out-number consumers), the QueueDelete command issued by the framework can apparently fail owing to a timeout exception. The command does in fact complete successfully server side, it is just the client gives up awaiting the response. This can cause a spurious test failure.

      I see this with VaryingNumberOfParticipants.json when maximumDuration is set to 100seconds.

      org.apache.qpid.AMQTimeoutException: Server did not respond in a timely fashion [error code 408: Request Timeout]
              at org.apache.qpid.client.util.BlockingWaiter.block(BlockingWaiter.java:177)
              at org.apache.qpid.client.protocol.BlockingMethodFrameListener.blockForFrame(BlockingMethodFrameListener.java:122)
              at org.apache.qpid.client.protocol.AMQProtocolHandler.writeCommandFrameAndWaitForReply(AMQProtocolHandler.java:656)
              at org.apache.qpid.client.protocol.AMQProtocolHandler.syncWrite(AMQProtocolHandler.java:677)
              at org.apache.qpid.client.protocol.AMQProtocolHandler.syncWrite(AMQProtocolHandler.java:671)
              at org.apache.qpid.client.AMQSession_0_8.sendQueueDelete(AMQSession_0_8.java:429)
              at org.apache.qpid.disttest.jms.QpidQueueCreator.deleteQueue(QpidQueueCreator.java:88)
              at org.apache.qpid.disttest.jms.QpidQueueCreator.deleteQueues(QpidQueueCreator.java:55)
              at org.apache.qpid.disttest.jms.ControllerJmsDelegate.deleteQueues(ControllerJmsDelegate.java:198)
              at org.apache.qpid.disttest.controller.TestRunner.deleteQueues(TestRunner.java:232)
              at org.apache.qpid.disttest.controller.TestRunner.runParts(TestRunner.java:139)
              at org.apache.qpid.disttest.controller.TestRunner.run(TestRunner.java:103)
              at org.apache.qpid.disttest.controller.Controller.runAllTests(Controller.java:172)
              at org.apache.qpid.disttest.ControllerRunner.runTest(ControllerRunner.java:120)
              at org.apache.qpid.disttest.ControllerRunner.runTests(ControllerRunner.java:105)
              at org.apache.qpid.disttest.ControllerRunner.runController(ControllerRunner.java:80)
              at org.apache.qpid.disttest.ControllerRunner.main(ControllerRunner.java:69)
      
      

        Activity

        Hide
        Keith Wall added a comment -

        Patch applied.

        Show
        Keith Wall added a comment - Patch applied.
        Hide
        Alex Rudyy added a comment -

        Keith,

        Could you please review and commit the patch attached?

        Show
        Alex Rudyy added a comment - Keith, Could you please review and commit the patch attached?
        Hide
        Alex Rudyy added a comment -

        Attached a patch changing QpidQueueCreator to drain the queue before deletion

        Show
        Alex Rudyy added a comment - Attached a patch changing QpidQueueCreator to drain the queue before deletion

          People

          • Assignee:
            Keith Wall
            Reporter:
            Keith Wall
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development