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

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

            Dates

              Created:
              Updated:
              Resolved: