[jbossts-issues] [JBoss JIRA] (JBTM-2307) StoreManager.getRecoveryStore() does not return the correct default
Tom Jenkinson (JIRA)
issues at jboss.org
Thu Nov 27 07:17:40 EST 2014
[ https://issues.jboss.org/browse/JBTM-2307?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13023552#comment-13023552 ]
Tom Jenkinson commented on JBTM-2307:
-------------------------------------
The purpose of JBTM-2207 it was to avoid string comparison with the default name - hence the default was moved to null. I would therefore think if we are going back to using a String for the default we are losing any value in 2207.
We can of course revert 2207 but in my testing it seems to work and return the same instance?
{code}
Object namedInstance = BeanPopulator.getNamedInstance(Object.class, null);
Object namedInstance2 = BeanPopulator.getNamedInstance(Object.class, null);
assertEquals(namedInstance, namedInstance2);
{code}
Is it possible the instance in question is being initialised by name "default" through some access that was missed?
This one for example: https://github.com/wildfly/wildfly/blob/master/transactions/src/main/java/org/jboss/as/txn/service/ArjunaObjectStoreEnvironmentService.java#L78 (The reason this is not a backwards compatibility issue is com.arjuna.common.internal.util.propertyservice.BeanPopulator is internal code that the app server is using)
> StoreManager.getRecoveryStore() does not return the correct default
> -------------------------------------------------------------------
>
> Key: JBTM-2307
> URL: https://issues.jboss.org/browse/JBTM-2307
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Components: Recovery
> Affects Versions: 5.0.3
> Reporter: Michael Musgrove
> Assignee: Michael Musgrove
> Fix For: 5.0.4
>
>
> We used to treat requests to get a store with a null name as implicitly meaning get the default named store. But a recent change (JBTM-2207 Make default name null in order for quick lookup) meant that this is no longer the default behaviour. Now a request like the following {code}
> BeanPopulator.getNamedInstance(ObjectStoreEnvironmentBean.class, null);{code} will return something other than the default named instance. This is causing a problem on wildfly where the call StoreManager.getRecoveryStore() does not return what was set in the transaction subsystem service initialisation.
> The fix is to explicitly set the name, ie replace calls like
> {code}BeanPopulator.getNamedInstance(ObjectStoreEnvironmentBean.class, null);{code} with {code}BeanPopulator.getNamedInstance(ObjectStoreEnvironmentBean.class, "default");{code}
--
This message was sent by Atlassian JIRA
(v6.3.8#6338)
More information about the jbossts-issues
mailing list