Skip to content

Conversation

richardstartin
Copy link
Contributor

@richardstartin richardstartin commented Dec 1, 2020

This is backward incompatible.

The consumer was updated in version 0.59.0 to start accepting $ as a placeholder. The producer wasn't updates at that time to avoid breaking mixed deployments. This could probably be done now, with a migration note for mixed tracer version environments stating that producers >= 0.76.0 require consumers >= 0.59.0.

@richardstartin richardstartin requested a review from a team as a code owner December 1, 2020 18:14
@richardstartin richardstartin added the tag: breaking change Breaking changes label Dec 1, 2020
@lpriima
Copy link
Contributor

lpriima commented Dec 1, 2020

I might expect someone will ask for try-parse-backward-compatible message logic. Like here:
#1656
and then here:
#1664

@richardstartin richardstartin force-pushed the rgs/jms-header-replacement branch from 1fc764d to 052352c Compare March 2, 2021 14:25
@richardstartin richardstartin merged commit 8b6fd06 into master Mar 3, 2021
@richardstartin richardstartin deleted the rgs/jms-header-replacement branch March 3, 2021 09:23
@github-actions github-actions bot added this to the 0.76.0 milestone Mar 3, 2021
@blagerweij
Copy link

@richardstartin This breaking change has caused downtime in our platform: We're using Amazon AWS SQS, which does not support message attributes containing a dollar sign. The following exception is thrown:
com.amazonaws.services.sqs.model.AmazonSQSException: Message (user) attribute name contains invalid non-alphanumeric character '#x24'. You can use only alphanumeric characters, hyphens (-), underscores (_), or periods (.)

After a lot of digging, we were able to find this breaking change in the APM Java Agent, and found the ENV variable revert back to the old behavior.

Please don't remove the DD_TRACE_JMS_LEGACY_DASH_REPLACEMENT, since we're now relying on the legacy behavior.

Why is replacing hyphen with dollar needed? SQS is fine with hyphens, so no need for replacing anything ?!?

@richardstartin
Copy link
Contributor Author

richardstartin commented Mar 26, 2021

@blagerweij thank you for reporting this issue and I apologise for the inconvenience caused; the impact on SQS was unanticipated. We have updated our release notes for 0.76.0 to warn SQS users not to use the release, and will do a release later in the day to include the changes in #2547 which reverts this change.

@devinsba
Copy link
Contributor

@blagerweij to answer the question about hyphens. JMS does not support hyphens:

"An identifier is an unlimited-length character sequence that must begin with a Java identifier start character; all following characters must be Java identifier part characters. An identifier start character is any character for which the method Character.isJavaIdentifierStart returns true. This includes '_' and '$'. An identifier part character is any character for which the method Character.isJavaIdentifierPart returns true."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tag: breaking change Breaking changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants