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

Details

    • 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

    Description

      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.

      Attachments

        Issue Links

          Activity

            People

              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:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: