Repository navigation
Replies: 7 comments 10 replies
|
Thanks Matt! I think the options combine rather than compete. I suggest this path:
It opens more questions:
|
|
h/t @cshannon on Slack
|
|
There is really no way to fix this without breaking the ability to read existing messages. OpenWire version doesn't help, it's not related to that because it's not tied to the OpenWire version per se. Each message that is persisted could have the previous encoding. To "fix" this would require starting fresh with an empty store. The other option is the journal compaction code that I'm working on could be leveraged to rewrite messages with the new encoding as an offline task. |
|
Also, keep in mind different protocols don't help here because the data is stored using OpenWire, so even if AMQP is used it gets changed during the conversion to store. |
|
I thought this issue sounded familiar and its because it is. I already fixed it for Stomp #1290 The same changes probably to be fixed for AMQP based on #2644 We can still look at fixing it long term by using a non modified UTF-8 in a major version, but that fix would at least fix AMQP (assuming it's the same conversion issue that STOMP had) |
|
One more case for this discussion: an OpenWire client that writes standard UTF-8 itself. Not every OpenWire client is Java.
This direction may be the easiest part to fix without breaking anyone: We will convert to modified UTF-8 on our side regardless. |
|
@cshannon thanks. Two clarifications, because I think the read-side change is smaller than it sounds. It adds no scan. The change is one more branch at that It makes no client worse off. Agreed that it does not replace the conversion STOMP and AMQP consumers need, or the longer-term move to standard UTF-8 with new OpenWire and KahaDB versions. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Background
As reported here: #2644 and spot fixed previously, ActiveMQ currently has incomplete coverage of the entire UTF-8 range when working with text-bodied messages.
Challenges with fixing it
Fixing it would mean potentially breaking existing users that have work arounds in place.
All clients and all brokers in the message flow path must be aligned or there is potential for issues. There is no iterative rollout option and rollback is everyone all at once.
Across protocol impacts: Non-OpenWire clients may be coded to work-around (AMQP, STOMP, etc)
Approaches
A couple fix options:
Use a env/sys property to enable proper UTF-8 rendering. Have a static code block that detects and then sets a flag to route desired behavior
Force fixed behavior as part of OpenWire v13
Make the ‘fixed’ behavior the default in ActiveMQ 7 and/or a combination of ActiveMQ 7 and OpenWire v13
Offer a env/sys flag to rollback to previously ‘incorrect’ behavior
Add an 'upgrade check' certification tool to analyze existing message stores for messages relying on modified UTF-8.
Motivation
Usage of Emoji (and potentially other uses of UTF-8 character range) will only increase across applications.
All reactions