|
[
Permlink
| « Hide
]
Andrew Perepelytsya added a comment - 09/May/08 10:51 AM
Andreas, could you be more specific about the configs? Maybe the error is there. As for thredlocal - this is how it should work. With TX in place there should be sync execution.
Here's the configuration from the deactivated test case. I even ported it over to 1.4 and ran it successfully, just to make sure the changes I recently made didn't break anything in any assumption previously made
Bumping up to major based on my findings. The actual root cause is as previously suspected a missing transaction instance not being created for the dispatcher and hence its thread. In 1.x, a receiver transaction was created and a separate dispatcher transaction. In 2.x, only a receiver transaction is created and at one point the code for the dispatcher transaction was removed. I wasn't able to find anything meaningful in the svn log on this and hence will provide a patch for review shortly. Maybe someone can explain why we have a separate receiver and dispatcher transaction and how the ultimately cooperate with each other. That sync=true isn't set when using MuleClient.dispatch() is more or less a fallout of the above because the sync variable is controlled by the existence of a transaction instance.
Suggested patch to rollback to what's currently implemented in 1.x so that a transaction is available for the dispatcher in its thread.
Follow-up commit: http://fisheye.codehaus.org/changelog/mule/?cs=11756
Something in this change, broke a configuration of ours where the outbound endpoint had a transformer associated to it. The transformer doesn't seem to be called when the message is routed to the endpoint. I have also tried using a restlet endpoint in the inbound side and it does successfully transform the object in the outbound router.
<service>
<inbound>
<vm:inbound-endpoint path="vendor.vendorCompliance.inbound.service.restlet"
connector-ref="common.internal.synchronous.connector" remoteSync="true" />
</inbound>
<outbound>
<filtering-router>
<vm:outbound-endpoint path="vendor.vendorCompliance.internal.service.find"
connector-ref="common.internal.synchronous.connector"
transformer-refs="vendor.vendorCompliance.inbound.restlet.transformer.restletToVendorComplianceKey" />
<message-property-filter pattern="http.method=GET" />
</filtering-router>
</outbound>
</service>
I am currently investigating this and also opened
-Andreas |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||