Uploaded image for project: 'JBoss Enterprise Application Platform'
  1. JBoss Enterprise Application Platform
  2. JBEAP-26721

CLI display of transaction heuristics is imprecise

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Minor Minor
    • None
    • 7.4.15.GA
    • CLI, Transactions
    • None
    • False
    • None
    • False
    • Workaround Exists
    • Hide

      Explicitly set the handler for records of type AtomicAction:

      System.setProperty("com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBrowserHandlers",  "com.arjuna.ats.arjuna.AtomicAction=com.arjuna.ats.internal.jta.tools.osb.mbean.jta.JTAActionBean");

      This will cause the transactions subsystem to add the correct handler for XAResourceRecords

      Show
      Explicitly set the handler for records of type AtomicAction: System.setProperty("com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBrowserHandlers",  "com.arjuna.ats.arjuna.AtomicAction=com.arjuna.ats.internal.jta.tools.osb.mbean.jta.JTAActionBean"); This will cause the transactions subsystem to add the correct handler for XAResourceRecords

      When a JTA transaction has a heuristic outcome, the CLI should be capable of displaying specific participant status information, so that users can perform diagnostic and data reconciliation activities using all relevant information, see

      https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.4/html/managing_transactions_on_jboss_eap/handling_transaction_manager_exceptions#guidelines_on_decision_making

      Expected, per docs:

      "result" =>

      { "eis-product-name" => "ArtemisMQ", "eis-product-version" => "2.0", "jndi-name" => "java:/JmsXA", "status" => "HEURISTIC_HAZARD", "type" => "/StateManager/AbstractRecord/XAResourceRecord" }

      However, the actual server output (EAP 7.4.15, narayana 5.11.4) is:

      ...
      "status" => "HEURISTIC",
      ...

       

      This occurs because the in-memory representation of the on-disk data, which does contain the full details, is built using polymorphic record handlers that understand specific participant types. The available subtypes (handlers/plugins) are registered through static configuration, mapping on-disk record types to in-memory mbean object types. Whilst the narayana codebase does have a specific handler for this case, it's apparently not being configured? Therefore the observed rendering is generic behavior from the base class, which leads to information loss in the UI, limiting the user's ability to resolve transaction issues.

      [ additional detail for narayana devs: AtomicAction->JTAActionBean association should cause XAResourceRecordBean to be used, thus https://github.com/jbosstm/narayana/blob/5.9.10.Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/tools/osb/mbean/jta/XAResourceRecordBean.java#L115 which reads the heuristic direct from the record; without it https://github.com/jbosstm/narayana/blob/5.9.10.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/osb/mbean/LogRecordWrapper.java#L202 is used and since rec.value() is null in cases where the XAResource can't be reconnected to the db, the heuristic information available in the logs is not rendered in such cases ]

       

            rhn-engineering-mmusgrov Michael Musgrove
            rhn-engineering-jhallida Jonathan Halliday
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated: