[
https://issues.apache.org/jira/browse/AMQ-3732?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13213979#comment-13213979
]
Phillip Henry commented on AMQ-3732:
------------------------------------
Hard to show in a unit test as it's not deterministic.
I noticed it while I was trying to work out why we had non-deterministic
behaviour in our AMQ stack. (Not found what the problem is yet. May very well
be a misconfiguration at our end...).
> Different methods synchronizing on different mutexes when changing the same
> field
> ---------------------------------------------------------------------------------
>
> Key: AMQ-3732
> URL: https://issues.apache.org/jira/browse/AMQ-3732
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.5.1
> Environment: Darwin phillip.local 9.8.0 Darwin Kernel Version 9.8.0:
> Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386 i386
> Reporter: Phillip Henry
> Labels: concurrency
>
> org.apache.activemq.broker.region.PrefetchSubscription.prefetchExtension is
> changed while guarded by a mutex on this (PrefetchSubscription) in
> PrefetchSubscription.pullMessage(...) and PrefetchSubscription.dispatchLock
> in PrefetchSubscription.acknowledge(...).
> This can lead to the corruption of the prefetchExtension variable (eg,
> prefetchExtension++ in pullMessage() is not an atomic operation so
> prefetchExtension may change in acknowledge() mid-way through this operation).
--
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