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

[GSS](7.0.z) Deadlock in BasicAction when jboss remoting and JTA is used

XMLWordPrintable

    • Hide

      Transaction propagation is provided with JTA over jboss remoting from one server to a second one and then back to first one.

      SERVER1
      -> server1.execute()
      -> inserts a row into a database
      -> server2..execute()
      SERVER2
      -> inserts a row into the database to a different table
      -> server1.execute()
      SERVER1
      -> inserts a row into the database
      -> server2.execute()
      SERVER2
      -> logging a message

      Possibly run crash recovery testuite as

      git clone http://git.app.eng.bos.redhat.com/git/jbossqe-eap-tests-transactions.git
      export JBOSS_HOME=... (downloadable at http://download.eng.brq.redhat.com/devel/candidates/JBEAP/)
      DS_PROPS="-Dds0.db=postgresql -Dds0.jdbc.driver.url=http://www.qa.jboss.com/jdbc-drivers-products/EAP/7.1.0/postgresql94/jdbc4/postgresql-9.4.1209.jar -Dds0.jdbc.xa-class=org.postgresql.xa.PGXADataSource -Dds0.jdbc.url=jdbc:postgresql://gen-vm006.mw.lab.eng.bos.redhat.com:5432/crashrec -Dds0.db.name=crashrec -Dds0.user=crashrec -Dds0.pass=crashrec -Dds0.jdbc.driver.jar=postgres-driver.jar"
      mvn clean verify -am -pl jbossts -DfailIfNoTests=false -Djbossts.noJTS -Dtest=TxPropagationJPAMultiCallCrashRecoveryTestCase $DS_PROPS
      
      Show
      Transaction propagation is provided with JTA over jboss remoting from one server to a second one and then back to first one. SERVER1 -> server1.execute() -> inserts a row into a database -> server2..execute() SERVER2 -> inserts a row into the database to a different table -> server1.execute() SERVER1 -> inserts a row into the database -> server2.execute() SERVER2 -> logging a message Possibly run crash recovery testuite as git clone http: //git.app.eng.bos.redhat.com/git/jbossqe-eap-tests-transactions.git export JBOSS_HOME=... (downloadable at http: //download.eng.brq.redhat.com/devel/candidates/JBEAP/) DS_PROPS= "-Dds0.db=postgresql -Dds0.jdbc.driver.url=http: //www.qa.jboss.com/jdbc-drivers-products/EAP/7.1.0/postgresql94/jdbc4/postgresql-9.4.1209.jar -Dds0.jdbc.xa-class=org.postgresql.xa.PGXADataSource -Dds0.jdbc.url=jdbc:postgresql://gen-vm006.mw.lab.eng.bos.redhat.com:5432/crashrec -Dds0.db.name=crashrec -Dds0.user=crashrec -Dds0.pass=crashrec -Dds0.jdbc.driver.jar=postgres-driver.jar" mvn clean verify -am -pl jbossts -DfailIfNoTests= false -Djbossts.noJTS -Dtest=TxPropagationJPAMultiCallCrashRecoveryTestCase $DS_PROPS
    • EAP 7.0.4

      Issue created based on discussion at jboss-support-transactions list: http://post-office.corp.redhat.com/archives/jboss-support-transactions/2016-September/msg00000.html

      Current jboss remoting implementation on JTA does not provide correct handling of double diamond transaction propagation problem.

      If transaction is propagated from one server to other one and then back to the first one then such situation can cause deadlock. Remote calls and transactions are processed but when servers using the same remote resource the prepare phase of 2PC can stuck. Transaction is timed-out later and recovery process rolls it back.

      IIOP/JTS does not suffer with this flaw.

              istudens@redhat.com Ivo Studensky
              rhn-support-bmaxwell Brad Maxwell
              Ondrej Chaloupka Ondrej Chaloupka (Inactive)
              Ondrej Chaloupka Ondrej Chaloupka (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

                Created:
                Updated:
                Resolved: