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

Details

    • 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.

    Description

      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+

      Attachments

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved: