[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