JIRA

  • Log In Access more options
    • Online Help
    • GreenHopper Help
    • Agile Answers
    • Use Agile By Default
    • Keyboard Shortcuts
    • About JIRA
    • JIRA Credits
    • What’s New
  • Dashboards Access more options (Alt+d)
  • Projects Access more options (Alt+p)
  • Issues Access more options (Alt+i)
  • Agile Access more options (Alt+g)
  • Create Issue
  • Mule
  • MULE-5954

Mule cannot configure JBOSS TM properties - defaultTimeout & txReaperTimeout

  • Agile Board
  • More Actions
  • Views
    • XML
    • Word
    • Printable

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 3.1.1, 3.2.0
  • Fix Version/s: 3.2.4 (EE only), 3.3.2 (EE only), 3.4.0
  • Component/s: Modules: XA Transactions
  • Labels:
    None
  • User impact:
    Medium
  • Similar Issues:
    None

Description

The jbossts schema allows arbitrary properties to be configured on the transaction manager. This creates the expectation that the TM can be fully configured that way, but only two such properties (node id and object store directory) are honored. The rest are ignored.

It is impossible to set, for instance, default TX timeout via Mule configuration.

Issue Links

is a piece of

Bug - A problem which impairs or prevents the functions of the product. MULE-6554 Unable to configure all Core, Environment and ObjectStore JBoss TM Properties

  • Minor - Minor loss of function, or other problem where easy workaround is present.
  • Open - The issue is open and ready for the assignee to start work on it.

Activity

Ascending order - Click to sort in descending order
  • All
  • Comments
  • Work Log
  • History
  • Activity
  • Transitions
  • Commits
  • Source
  • Builds
Hide
Permalink
Mike Schilling added a comment - 08/Dec/11 04:27 PM

The simplest workaround is to specify the TM properties as system properties when running Mule. Another option is to create a file jbossts-properties.xml that contains the desired propertis, and place it in the user.home or user.dir directories, or as a resource in the classpath.

Because these propertied are stored as static variables in the JBoss TM classes, it is not possible for different Mule applications in the same Mule instance to have different values for them.

Show
Mike Schilling added a comment - 08/Dec/11 04:27 PM The simplest workaround is to specify the TM properties as system properties when running Mule. Another option is to create a file jbossts-properties.xml that contains the desired propertis, and place it in the user.home or user.dir directories, or as a resource in the classpath. Because these propertied are stored as static variables in the JBoss TM classes, it is not possible for different Mule applications in the same Mule instance to have different values for them.
Hide
Permalink
Raphael Jammart added a comment - 15/Jan/12 01:44 PM

I was not able to use the workaround by placing this file in the resource of the project but by placing it in the others directories the TM ran as expected.

I also patched the class org.mule.module.jboss.transaction.JBossArjunaTransactionManagerFactory like this to let the behavior consistent with the documentation:

if (properties.containsKey(PROPERTY_TX_TRANSACTION_TIMEOUT))

{ arjPropertyManager.getCoordinatorEnvironmentBean().setDefaultTimeout(new Integer(properties.get(PROPERTY_TX_TRANSACTION_TIMEOUT))); }

if (properties.containsKey(PROPERTY_TX_TRANSACTION_REAPER_TIMEOUT))

{ arjPropertyManager.getCoordinatorEnvironmentBean().setTxReaperTimeout(new Integer(properties.get(PROPERTY_TX_TRANSACTION_REAPER_TIMEOUT))); }

With theses few lines of codes, the old way to configure TM run as expected:
<jbossts:transaction-manager >
<property key="com.arjuna.ats.arjuna.coordinator.defaultTimeout" value="60" /><!-- this is in seconds -->
<property key="com.arjuna.ats.arjuna.coordinator.txReaperTimeout" value="108000"/><!-- this is in milliseconds -->
</jbossts:transaction-manager>

But I don't know if it is the good way.
Any comment is welcome.

Show
Raphael Jammart added a comment - 15/Jan/12 01:44 PM I was not able to use the workaround by placing this file in the resource of the project but by placing it in the others directories the TM ran as expected. I also patched the class org.mule.module.jboss.transaction.JBossArjunaTransactionManagerFactory like this to let the behavior consistent with the documentation: if (properties.containsKey(PROPERTY_TX_TRANSACTION_TIMEOUT)) { arjPropertyManager.getCoordinatorEnvironmentBean().setDefaultTimeout(new Integer(properties.get(PROPERTY_TX_TRANSACTION_TIMEOUT))); } if (properties.containsKey(PROPERTY_TX_TRANSACTION_REAPER_TIMEOUT)) { arjPropertyManager.getCoordinatorEnvironmentBean().setTxReaperTimeout(new Integer(properties.get(PROPERTY_TX_TRANSACTION_REAPER_TIMEOUT))); } With theses few lines of codes, the old way to configure TM run as expected: <jbossts:transaction-manager > <property key="com.arjuna.ats.arjuna.coordinator.defaultTimeout" value="60" /><!-- this is in seconds --> <property key="com.arjuna.ats.arjuna.coordinator.txReaperTimeout" value="108000"/><!-- this is in milliseconds --> </jbossts:transaction-manager> But I don't know if it is the good way. Any comment is welcome.
Hide
Permalink
Christopher Mordue added a comment - 25/Oct/12 02:55 PM

There are three environment beans used for configuring the transaction manager: CoreEnvironmentBean, CoordinatorEnvironmentBean and ObjectStoreEnvironmentBean. Because the beans contain an annotation with the property key, we should introspect each of them to get a list of possible properties. We can then iterate through each of these. If the property was provided, we can call the appropriate setter on the appropriate bean.

Show
Christopher Mordue added a comment - 25/Oct/12 02:55 PM There are three environment beans used for configuring the transaction manager: CoreEnvironmentBean, CoordinatorEnvironmentBean and ObjectStoreEnvironmentBean. Because the beans contain an annotation with the property key, we should introspect each of them to get a list of possible properties. We can then iterate through each of these. If the property was provided, we can call the appropriate setter on the appropriate bean.
Hide
Permalink
Christopher Mordue added a comment - 01/Dec/12 07:19 PM

Made com.arjuna.ats.arjuna.coordinator.defaultTimeout and com.arjuna.ats.arjuna.coordinator.txReaperTimeout exposed. This issue did not exist in 3.1.4. Added this fix in 3.2.4, 3.3.2, 3.4.

Show
Christopher Mordue added a comment - 01/Dec/12 07:19 PM Made com.arjuna.ats.arjuna.coordinator.defaultTimeout and com.arjuna.ats.arjuna.coordinator.txReaperTimeout exposed. This issue did not exist in 3.1.4. Added this fix in 3.2.4, 3.3.2, 3.4.
Hide
Permalink
Christopher Mordue added a comment - 03/Dec/12 12:23 PM

Created a new issue: MULE-6554 to keep track that I've committed only a partial fix for this issue. The new jira will be used for a more complete fix.

Show
Christopher Mordue added a comment - 03/Dec/12 12:23 PM Created a new issue: MULE-6554 to keep track that I've committed only a partial fix for this issue. The new jira will be used for a more complete fix.
Hide
Permalink
Christopher Mordue added a comment - 03/Dec/12 12:26 PM

Fix 3.2.x:
https://fisheye.codehaus.org/changelog/mule?cs=25068

Fix 3.3.x:
https://fisheye.codehaus.org/changelog/mule?cs=25069

Fix 3.x:
https://fisheye.codehaus.org/changelog/mule?cs=25070

Show
Christopher Mordue added a comment - 03/Dec/12 12:26 PM Fix 3.2.x: https://fisheye.codehaus.org/changelog/mule?cs=25068 Fix 3.3.x: https://fisheye.codehaus.org/changelog/mule?cs=25069 Fix 3.x: https://fisheye.codehaus.org/changelog/mule?cs=25070

People

  • Assignee:
    Christopher Mordue
    Reporter:
    Mike Schilling
Vote (2)
Watch (2)

Dates

  • Created:
    08/Dec/11 04:22 PM
    Updated:
    03/Dec/12 12:30 PM
    Resolved:
    03/Dec/12 12:30 PM

Agile

  • View on Board
  • Atlassian JIRA (v5.0.7#734-sha1:8ad78a6)
  • Report a problem
  • Powered by a free Atlassian JIRA open source license for MuleForge. Try JIRA - bug tracking software for your team.