[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?

		Object namedInstance = BeanPopulator.getNamedInstance(Object.class, null);
		Object namedInstance2 = BeanPopulator.getNamedInstance(Object.class, null);
		assertEquals(namedInstance, namedInstance2);

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

More information about the jbossts-issues mailing list