[
https://issues.apache.org/jira/browse/ARTEMIS-4657?focusedWorklogId=907428&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-907428
]
ASF GitHub Bot logged work on ARTEMIS-4657:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 28/Feb/24 21:27
Start Date: 28/Feb/24 21:27
Worklog Time Spent: 10m
Work Description: jbertram commented on PR #4833:
URL:
https://github.com/apache/activemq-artemis/pull/4833#issuecomment-1969949109
If you executed the `JMSCorrelationIDTest` I added in d38b5a7 without the
other changes this would be the result:
- Correlation ID as `byte[]`
- :white_check_mark: AMQP to AMQP
- :x: AMQP to Core
- :x: AMQP to OpenWire
- :white_check_mark: Core to Core
- :x: Core to AMQP
- :x: Core to OpenWire
- :white_check_mark: OpenWire to OpenWire
- :x: OpenWire to AMQP
- :x: OpenWire to Core
- Correlation ID as `String`
- :white_check_mark: AMQP to AMQP
- :white_check_mark: AMQP to Core
- :white_check_mark: AMQP to OpenWire
- :white_check_mark: Core to Core
- :white_check_mark: Core to AMQP
- :white_check_mark: Core to OpenWire
- :white_check_mark: OpenWire to OpenWire
- :white_check_mark: OpenWire to AMQP
- :white_check_mark: OpenWire to Core
So...right now there is full compatibility with `String` among JMS clients
and no compatibility with `byte[]`.
If you executed the `JMSCorrelationIDTest` I added in d38b5a7 along with the
other changes this would be the result:
- Correlation ID as `byte[]`
- :white_check_mark: AMQP to AMQP
- :white_check_mark: AMQP to Core
- :white_check_mark: AMQP to OpenWire
- :white_check_mark: Core to Core
- :white_check_mark: Core to AMQP
- :white_check_mark: Core to OpenWire
- :white_check_mark: OpenWire to OpenWire
- :white_check_mark: OpenWire to AMQP
- :white_check_mark: OpenWire to Core
- Correlation ID as `String`
- :white_check_mark: AMQP to AMQP
- :white_check_mark: AMQP to Core
- :white_check_mark: AMQP to OpenWire
- :white_check_mark: Core to Core
- :white_check_mark: Core to AMQP
- :white_check_mark: Core to OpenWire
- :white_check_mark: OpenWire to OpenWire
- :x: OpenWire to AMQP
- :x: OpenWire to Core
So...the changes in d38b5a7 are sacrificing 2 OpenWire `String` use-cases
for full compatibility with `byte[]`. Whether or not this is OK is the subject
of this PR.
If I hard-code the broker to deal with the OpenWire correlation ID as a
**`String`** these are the results:
- Correlation ID as `byte[]`
- :white_check_mark: AMQP to AMQP
- :white_check_mark: AMQP to Core
- :x: AMQP to OpenWire
- :white_check_mark: Core to Core
- :white_check_mark: Core to AMQP
- :x: Core to OpenWire
- :white_check_mark: OpenWire to OpenWire
- :x: OpenWire to AMQP
- :x: OpenWire to Core
- Correlation ID as `String`
- :white_check_mark: AMQP to AMQP
- :white_check_mark: AMQP to Core
- :white_check_mark: AMQP to OpenWire
- :white_check_mark: Core to Core
- :white_check_mark: Core to AMQP
- :white_check_mark: Core to OpenWire
- :white_check_mark: OpenWire to OpenWire
- :white_check_mark: OpenWire to AMQP
- :white_check_mark: OpenWire to Core
In short, full compatibility with `String` and no compatibility with
OpenWire with `byte[]`.
Perhaps our hands are tied here and we just can't support OpenWire
correlation ID as `byte[]` since it will break existing use-cases. I'm running
the full test-suite now, and if there are existing test-cases that break then
that will help convince me. However, at this point it seems to me like using
`byte[]` to gain compatibility between JMS and a "native" format (e.g. core) is
actually the right thing to do so supporting `byte[]` across all protocols at
the sacrifice of `String` is appropriate especially since this will open the
door to compatibility with MQTT 5 (although I grant that's likely an edge case).
I'm, of course, open to being convinced otherwise. I'd love your thoughts.
Issue Time Tracking
-------------------
Worklog Id: (was: 907428)
Time Spent: 50m (was: 40m)
> Support correlation ID compatibility between JMS clients
> --------------------------------------------------------
>
> Key: ARTEMIS-4657
> URL: https://issues.apache.org/jira/browse/ARTEMIS-4657
> Project: ActiveMQ Artemis
> Issue Type: Improvement
> Reporter: Justin Bertram
> Assignee: Justin Bertram
> Priority: Major
> Time Spent: 50m
> Remaining Estimate: 0h
>
> Currently there are some use-cases with both {{String}} and {{byte[]}} values
> of JMS correlation ID that don't work between Core, OpenWire, and AMQP. We
> should support as many as possible.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)