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

[Broker-J] [AMQP 0-8...0-9-1] Broker crashes on delivery of messages from queue having attribute 'messageGroupKeyOverride' set to an empty string

    XMLWordPrintableJSON

    Details

      Description

      Broker crashes on consumption of messages from queue having attribute 'messageGroupKeyOverride' set to an empty string. The following stack trace is generated:

      ########################################################################
      #
      # Unhandled Exception java.lang.IllegalArgumentException: Property name must not be the empty string in Thread IO-/127.0.0.1:63421
      #
      # Exiting
      #
      ########################################################################
      java.lang.IllegalArgumentException: Property name must not be the empty string
      	at org.apache.qpid.server.protocol.v0_8.FieldTable.checkPropertyName(FieldTable.java:787)
      	at org.apache.qpid.server.protocol.v0_8.FieldTable.getProperty(FieldTable.java:98)
      	at org.apache.qpid.server.protocol.v0_8.FieldTable.getObject(FieldTable.java:428)
      	at org.apache.qpid.server.protocol.v0_8.FieldTable.get(FieldTable.java:1055)
      	at org.apache.qpid.server.protocol.v0_8.FieldTable.get(FieldTable.java:1050)
      	at org.apache.qpid.server.protocol.v0_8.MessageMetaData$MessageHeaderAdapter.getHeader(MessageMetaData.java:283)
      	at org.apache.qpid.server.queue.AssignedConsumerMessageGroupManager.getGroupValue(AssignedConsumerMessageGroupManager.java:83)
      	at org.apache.qpid.server.queue.AssignedConsumerMessageGroupManager.mightAssign(AssignedConsumerMessageGroupManager.java:61)
      	at org.apache.qpid.server.queue.AbstractQueue.mightAssign(AbstractQueue.java:1335)
      	at org.apache.qpid.server.queue.AbstractQueue.getNextAvailableEntry(AbstractQueue.java:2087)
      	at org.apache.qpid.server.queue.AbstractQueue.consumerHasAvailableMessages(AbstractQueue.java:2234)
      	at org.apache.qpid.server.queue.AbstractQueue.notifyConsumer(AbstractQueue.java:2268)
      	at org.apache.qpid.server.queue.AbstractQueue.setNotifyWorkDesired(AbstractQueue.java:2245)
      	at org.apache.qpid.server.queue.QueueConsumerImpl.setNotifyWorkDesired(QueueConsumerImpl.java:356)
      	at org.apache.qpid.server.consumer.AbstractConsumerTarget.setNotifyWorkDesired(AbstractConsumerTarget.java:130)
      	at org.apache.qpid.server.protocol.v0_8.ConsumerTarget_0_8.updateNotifyWorkDesired(ConsumerTarget_0_8.java:320)
      	at org.apache.qpid.server.protocol.v0_8.AMQChannel.updateAllConsumerNotifyWorkDesired(AMQChannel.java:1495)
      	at org.apache.qpid.server.protocol.v0_8.AMQChannel.receiveChannelFlow(AMQChannel.java:2319)
      	at org.apache.qpid.server.protocol.v0_8.transport.ChannelFlowBody.process(ChannelFlowBody.java:98)
      	at org.apache.qpid.server.protocol.v0_8.ServerDecoder.processMethod(ServerDecoder.java:126)
      	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)
      	at org.apache.qpid.server.protocol.v0_8.ServerDecoder.decodeBuffer(ServerDecoder.java:44)
      	at org.apache.qpid.server.protocol.v0_8.AMQPConnection_0_8Impl$1.run(AMQPConnection_0_8Impl.java:257)
      	at org.apache.qpid.server.protocol.v0_8.AMQPConnection_0_8Impl$1.run(AMQPConnection_0_8Impl.java:249)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at org.apache.qpid.server.protocol.v0_8.AMQPConnection_0_8Impl.received(AMQPConnection_0_8Impl.java:248)
      	at org.apache.qpid.server.transport.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:135)
      	at org.apache.qpid.server.transport.NonBlockingConnection.processAmqpData(NonBlockingConnection.java:610)
      	at org.apache.qpid.server.transport.NonBlockingConnectionPlainDelegate.processData(NonBlockingConnectionPlainDelegate.java:58)
      	at org.apache.qpid.server.transport.NonBlockingConnection.doRead(NonBlockingConnection.java:496)
      	at org.apache.qpid.server.transport.NonBlockingConnection.doWork(NonBlockingConnection.java:270)
      	at org.apache.qpid.server.transport.NetworkConnectionScheduler.processConnection(NetworkConnectionScheduler.java:134)
      	at org.apache.qpid.server.transport.SelectorThread$ConnectionProcessor.processConnection(SelectorThread.java:575)
      	at org.apache.qpid.server.transport.SelectorThread$SelectionTask.performSelect(SelectorThread.java:366)
      	at org.apache.qpid.server.transport.SelectorThread$SelectionTask.run(SelectorThread.java:97)
      	at org.apache.qpid.server.transport.SelectorThread.run(SelectorThread.java:533)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at org.apache.qpid.server.bytebuffer.QpidByteBufferFactory.lambda$null$0(QpidByteBufferFactory.java:464)
      	at java.lang.Thread.run(Thread.java:748)
      
      

      Validation of groupId attribute should be strengthen to disallow setting attribute value to an empty string.
      Only AMQP 0-8..0-91 published messages are affected.

        Attachments

          Activity

            People

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

              Dates

              • Created:
                Updated:
                Resolved: