Uploaded image for project: 'AMQ Broker'
  1. AMQ Broker
  2. ENTMQBR-2081

Openwire client is able to send one more message, when address is full (address policy fail)

XMLWordPrintable

    • Compatibility/Configuration
    • Hide
      Cause: Once the address is full, one extra message is allowed to be received, even though the client received a failure.

      Consequence: The message will be received, even though the sender failed.

      Fix: We are now checking for full address before the send goes into routing.

      Result: consumer will only receive messages that were confirmed by the sender.
      Show
      Cause: Once the address is full, one extra message is allowed to be received, even though the client received a failure. Consequence: The message will be received, even though the sender failed. Fix: We are now checking for full address before the send goes into routing. Result: consumer will only receive messages that were confirmed by the sender.
    • Hide
      <address-settings>
            <address-setting match="#">
              <redelivery-delay>0</redelivery-delay>
              <auto-delete-queues>false</auto-delete-queues>
              <auto-create-jms-queues>false</auto-create-jms-queues>
              <message-counter-history-day-limit>10</message-counter-history-day-limit>
              <dead-letter-address>DLQ</dead-letter-address>
              <address-full-policy>FAIL</address-full-policy>
              <auto-delete-jms-queues>false</auto-delete-jms-queues>
              <max-size-bytes>1048576</max-size-bytes>
              <auto-create-queues>false</auto-create-queues>
              <expiry-address>ExpiryQueue</expiry-address>
            </address-setting>
          </address-settings>
      
      1. Create queue
        java -jar /var/dtests/node_data/clients/amqx.jar queue --host 10.37.145.217:1099 --username admin --password admin --action add --name 'JAMQNode777Tests_test_address_full_policy_fail'
      2. Send just enough messages to fill address size, so you will get
        actual AddressSize (1053264) > max-address-size (1048576)
      3. Send more messages, which should be rejected by broker.
        One more message goes in despite address being full and sender client getting proper exception.
      Show
      <address-settings> <address-setting match= "#" > <redelivery-delay> 0 </redelivery-delay> <auto-delete-queues> false </auto-delete-queues> <auto-create-jms-queues> false </auto-create-jms-queues> <message-counter-history-day-limit> 10 </message-counter-history-day-limit> <dead-letter-address> DLQ </dead-letter-address> <address-full-policy> FAIL </address-full-policy> <auto-delete-jms-queues> false </auto-delete-jms-queues> <max-size-bytes> 1048576 </max-size-bytes> <auto-create-queues> false </auto-create-queues> <expiry-address> ExpiryQueue </expiry-address> </address-setting> </address-settings> Create queue java -jar /var/dtests/node_data/clients/amqx.jar queue --host 10.37.145.217:1099 --username admin --password admin --action add --name 'JAMQNode777Tests_test_address_full_policy_fail' Send just enough messages to fill address size, so you will get actual AddressSize (1053264) > max-address-size (1048576) Send more messages, which should be rejected by broker. One more message goes in despite address being full and sender client getting proper exception.

      Address full policy fail is not working correctly since 7.2.1. In 7.2.0 client was rejected to send any new incoming messages, while in 7.2.1+ I am able to send more messages in.

      This is a regression compared to 7.2.0. Same test passes with 7.2.0, but fails with 7.2.1+

            csuconic@redhat.com Clebert Suconic
            mtoth@redhat.com Michal Toth
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: