[
https://issues.apache.org/jira/browse/AMQ-3817?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Timothy Bish resolved AMQ-3817.
-------------------------------
Resolution: Fixed
Assignee: Timothy Bish
Patch applied with thanks.
> Marshalled properties don't get updated if modified during preProcessDispatch
> (TraceBrokerPathPlugin looks broken)
> ------------------------------------------------------------------------------------------------------------------
>
> Key: AMQ-3817
> URL: https://issues.apache.org/jira/browse/AMQ-3817
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.5.1
> Reporter: Raul Kripalani
> Assignee: Timothy Bish
> Labels: marshaling, openwire, plugin
> Fix For: 5.6.0, 5.5.1
>
> Attachments: amq-tracebrokerpath-fix.diff,
> amq-tracebrokerpath-testcase.diff
>
>
> Enabling the TraceBrokerPathPlugin with a custom property name = 'JMSXTrace'
> sends outdated information to the consumer. When inspecting the property at
> the consumer code, it has not been updated with the complete broker path.
> Only the first broker, where the message was produced into, appears. No
> matter how many brokers are in the route (tested with 4).
> Having dug into the code, it looks like marshalledProperties in Message were
> already set but not dirtied when setProperty was called again from the
> TraceBrokerPathPlugin. Also, Message.beforeMarshall() assumes that since
> marshalledProperties is already set, it doesn't need updating. Therefore, the
> message is dispatched to the consumer with an old version of the properties.
> I think Message.setProperty() should check whether marshalledProperties
> already has a value. If it does, it should re-marshall (i.e. dirty the cache).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira