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

    Details

    • Target Release:
    • Steps to Reproduce:
      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
    • Sprint:
      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.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  istudens Ivo Studensky
                  Reporter:
                  bmaxwell Brad Maxwell
                  Tester:
                  Ondrej Chaloupka
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  7 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: