Uploaded image for project: 'IronJacamar'
  1. IronJacamar
  2. JBJCA-1374

add option for disabling transaction_marked_rollback_only_fail_fast check that throws "javax.resource.ResourceException: IJ000459: Transaction is not active" error

    • Icon: Enhancement Enhancement
    • Resolution: Won't Do
    • Icon: Major Major
    • None
    • None
    • Core
    • None

      In my internal testing with Hibernate, I hit a problem with IronJacamar throwing "javax.resource.ResourceException: IJ000459: Transaction is not active" error when called to get a database connection from pool from a thread that has an active transaction marked for rollback only.

      The Hibernate jira is https://hibernate.atlassian.net/browse/HHH-12472, which we are talking about changing. As well as WildFly jira https://issues.jboss.org/browse/WFLY-10229 for a related bug.

      Independent of the HHH-12472 + WFLY-10229 issues, I think it would be useful if there was a data source deployment option (in WildFly standalone*.xml) or system property, for disabling the IJ000459 check for rollback only transactions, as the IJ000459 check is not always expected.

            [JBJCA-1374] add option for disabling transaction_marked_rollback_only_fail_fast check that throws "javax.resource.ResourceException: IJ000459: Transaction is not active" error

            Scott Marlow added a comment - Or reference http://www.ironjacamar.org/doc/userguide/1.2/en-US/html/ch04.html#configuration_ironjacamar_rollback

            Scott Marlow added a comment - http://www.ironjacamar.org/doc/userguide/1.2/en-US/pdf/IronJacamarUserGuide.pdf

            never mind, just reading the IJ 1.2 doc and we should already have:

            "
            4.1.2. Allow obtaining connections during MARKED_FOR_ROLLBACK
            IronJacamar doesn't allow to obtain a new connection once a transaction is in
            MARKED_FOR_ROLLBACK mode. This allows the container to fail eagerly, since any work after that point is wasted anyway.
            However, certain applications depends on getting a connection to perform work.
            IronJacamar has a system property called ironjacamar.allow_marked_for_rollback
            which can be set to true to enable this scenario.
            Note, that an existing enlisted connection is allowed to be obtained. This can be disallowed by
            setting the system property
            ironjacamar.allow_marked_for_rollback_fast_fail to true

            Scott Marlow added a comment - never mind, just reading the IJ 1.2 doc and we should already have: " 4.1.2. Allow obtaining connections during MARKED_FOR_ROLLBACK IronJacamar doesn't allow to obtain a new connection once a transaction is in MARKED_FOR_ROLLBACK mode. This allows the container to fail eagerly, since any work after that point is wasted anyway. However, certain applications depends on getting a connection to perform work. IronJacamar has a system property called ironjacamar.allow_marked_for_rollback which can be set to true to enable this scenario. Note, that an existing enlisted connection is allowed to be obtained. This can be disallowed by setting the system property ironjacamar.allow_marked_for_rollback_fast_fail to true

              Unassigned Unassigned
              smarlow1@redhat.com Scott Marlow
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: