[jboss-jira] [JBoss JIRA] (WFLY-13632) If a CMR resource is deployed concurrently then it will overwrite the list of resources that are expected to behave as CMR
Brian Stansberry (Jira)
issues at jboss.org
Mon Jul 6 21:26:16 EDT 2020
[ https://issues.redhat.com/browse/WFLY-13632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14202326#comment-14202326 ]
Brian Stansberry edited comment on WFLY-13632 at 7/6/20 9:21 PM:
-----------------------------------------------------------------
[~mmusgrov] [~tomjenkinson]
There can be more than one /subsystem=transactions/commit-markable-resource=* resource and the CMResourceAdd handler will install an instance of CMResourceService for each. Those *install* calls will happen in series (e.g. during boot) from a single thread, and no other management op can come in and add another commit-markable-resource=* resource at the same time. But installing an MSC Service is not the same as starting the service – MSC invokes the start method on services concurrently using its thread pool. So you can definitely get concurrent calls to CMResourceService.start(StartContext).
was (Author: brian.stansberry):
[~mmusgrov] [~tomjenkinson]
There can be more than one /subsystem=transactions/commit-markable-resource=* resource and the CMResourceAdd handler will install an instance of CMResourceService for each. Those *install* calls will happen in series (e.g. during boot) from a single thread, and no other management op can come in and add resource another commit-markable-resource=* resource at the same time. But installing an MSC Service is not the same as starting the service – MSC invokes the start method on services concurrently using its thread pool. So you can definitely get concurrent calls to CMResourceService.start(StartContext).
> If a CMR resource is deployed concurrently then it will overwrite the list of resources that are expected to behave as CMR
> --------------------------------------------------------------------------------------------------------------------------
>
> Key: WFLY-13632
> URL: https://issues.redhat.com/browse/WFLY-13632
> Project: WildFly
> Issue Type: Bug
> Components: Transactions
> Reporter: Thomas Jenkinson
> Assignee: Michael Musgrove
> Priority: Blocker
>
> Inspecting https://github.com/wildfly/wildfly/blob/master/transactions/src/main/java/org/jboss/as/txn/service/CMResourceService.java#L73 we can see that it will overwrite the map in https://github.com/jbosstm/narayana/blob/48818111d12d2e51b52082a00bcb606040c36546/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java#L1111 because it first get's a copy of a map (https://github.com/wildfly/wildfly/blob/master/transactions/src/main/java/org/jboss/as/txn/service/CMResourceService.java#L63 -> https://github.com/jbosstm/narayana/blob/48818111d12d2e51b52082a00bcb606040c36546/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java#L1089) so the maps won't be equal.
> This will result in WildFly overwriting the list of resources that Narayana will treat as CMR.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
More information about the jboss-jira
mailing list