Uploaded image for project: 'A-MQ Broker'
  1. A-MQ Broker
  2. ENTMQBR-897

Openwire client/protocol issues with special characters in destination name

    Details

    • Type: Bug
    • Status: New
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: AMQ 7.0.3.GA, AMQ 7.1.0.GA
    • Fix Version/s: None
    • Component/s: openwire-protocol
    • Labels:
      None
    • Environment:

      AMQ 7.1.0 and older (7.0.3 is affected as well)
      Openwire protocol/ JMS client

    • Target Release:
    • Affects:
      Documentation (Ref Guide, User Guide, etc.), Release Notes, Compatibility/Configuration
    • Workaround:
      Workaround Exists
    • Workaround Description:
      Hide

      Do not use these special characters in queue/address names with Openwire client. ',', '#', '>' and whitespace and should not be used for address and queue names

      Show
      Do not use these special characters in queue/address names with Openwire client. ',', '#', '>' and whitespace and should not be used for address and queue names
    • Release Notes Text:
      Currently AMQ OpenWire JMS clients cannot access queues and address that include the following characters in their name: comma (','), hash ('#'), greater than ('>'), and whitespace.
    • Release Notes Docs Status:
      Documented as Known Issue

      Description

      1) Openwire client can't send or receive to destination with comma in it. Somehow it splits address into two parts based on ','.

      java  -jar /var/dtests/node_data/clients/aoc7.jar sender  --timeout 5 --log-msgs dict --broker tcp://localhost:61616 --conn-username admin --conn-password admin --address 'address_,_name' --count 1
      
      19:44:08,612 ERROR Error while sending a message!
      javax.jms.InvalidDestinationException: Cannot publish to a non-existent Destination: queue://_name
      

      2) Same as 1) but special symbol is "?"

      java  -jar /var/dtests/node_data/clients/aoc7.jar sender  --timeout 5 --log-msgs dict --broker tcp://localhost:61616 --conn-username admin --conn-password admin --address address_?_name --count 1
      
      19:49:39,031 ERROR Error while sending a message!
      javax.jms.InvalidDestinationException: AMQ119017: Queue address_ does not exist
      

      3) Receiver client can't "decode?" properly ">" symbol.
      Sender sends message to queue correctly, but receiver "translates" ">" into hash "#" and fails to connect to given destination.

      java  -jar /var/dtests/node_data/clients/amqx.jar  queue --host localhost:1099 --action add --name queue_\>_name --address address_\>_name
      java  -jar /var/dtests/node_data/clients/aoc7.jar sender  --timeout 5 --log-msgs dict --broker tcp://localhost:61616 --conn-username admin --conn-password admin --address address_\>_name --count 1
      java  -jar /var/dtests/node_data/clients/aoc7.jar receiver  --log-msgs dict --broker tcp://localhost:61616 --conn-username admin --conn-password admin --address address_\>_name::queue_\>_name --count 1
      
      [2017-10-30 11:05:09,200] [INFO] dtestlib.Test :: stdout:
        11:08:23,313 ERROR Exception while consuming message!
      [2017-10-30 11:05:09,200] [INFO] dtestlib.Test :: stderr:
        javax.jms.InvalidDestinationException: Destination doesn't exist: address_#_name::queue_#_name
        	at org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.createConsumer(AMQSession.java:166)
      

      4) "blank" character (ascii_symbol_code 32) as prefix and suffix is treated as whitespace and removed from destination name.
      If blank character is used as "infix" it works ok, but most probably because it is treated as whitespace (space) character.

      java  -jar /var/dtests/node_data/clients/aoc7.jar sender  --timeout 5 --log-msgs dict --broker tcp://localhost:61616 --conn-username admin --conn-password admin --address queue_name_\  --count 1
      
      [2017-10-30 11:40:27,127] [INFO] dtestlib.Test :: stdout:
        11:43:41,358 ERROR Error while sending a message!
      [2017-10-30 11:40:27,127] [INFO] dtestlib.Test :: stderr:
        javax.jms.InvalidDestinationException: AMQ119017: Queue queue_name_ does not exist
      JAMQConfigurationAutoGen777Tests/test_queue_prefix_blank (69): FAIL
      JAMQConfigurationAutoGen777Tests/test_queue_suffix_blank (102): FAIL
      

      All of these issues are not present in AMQP or Core protocols. All have been tested with appropriate JMS clients.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  ataylor Andy Taylor
                  Reporter:
                  mtoth Michal Toth
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  3 Start watching this issue

                  Dates

                  • Created:
                    Updated: