Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-5623

Stuck server when stopped right after started if jdbc store for transaction logs is used

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 10.0.0.CR5
    • 10.0.0.CR4
    • Transactions
    • None
    • Hide
      1. Configure server to use jdbc object store (you can use the attached configuration)
        1. copy attached standalone-full.xml to $JBOSS_HOME/standalone/configuration
      2. Configure jdbc driver as module - you can use attached jdbc module with oracle driver
        1. cd $JBOSS_HOME
        2. unzip jdbc-module.zip
      3. Start server
        1. ./bin/standalone.sh -c standalone-full.xml
      4. Stop server by pressing CTRL+C immediatelly when you see message: INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: EAP 7.0.0.Alpha1 (WildFly Core 2.0.0.CR8) started in 8432ms - Started 305 of 535 services (331 services are lazy, passive or on-demand)
        1. you need to stop the server during recovery is in process. you can also wait for recovery being run and then stop the server. the period for waiting for recovery could be change from default 2min by adding parameter ./bin/standalone.sh -c standalone-full.xml -Dcom.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod=30
      Show
      Configure server to use jdbc object store (you can use the attached configuration) copy attached standalone-full.xml to $JBOSS_HOME/standalone/configuration Configure jdbc driver as module - you can use attached jdbc module with oracle driver cd $JBOSS_HOME unzip jdbc-module.zip Start server ./bin/standalone.sh -c standalone-full.xml Stop server by pressing CTRL+C immediatelly when you see message: INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: EAP 7.0.0.Alpha1 (WildFly Core 2.0.0.CR8) started in 8432ms - Started 305 of 535 services (331 services are lazy, passive or on-demand) you need to stop the server during recovery is in process. you can also wait for recovery being run and then stop the server. the period for waiting for recovery could be change from default 2min by adding parameter ./bin/standalone.sh -c standalone-full.xml -Dcom.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod=30

      It happens to me that when using jdbc object store for transactions with driver loaded as a module then if I start server and stopped it right after the start is finished I can see error [1] and server stay stuck. I need to run kill -9 to server finish.

      This seems to be connected with recovery processing. If I start server and not stopping it immediately after it was started then I do not experience this problem.
      But if leave server to run for some time and I decide to stop server at time when periodic recovery is in process (e.g. checking server.log activity by tail -F standalone/log/server.log then I experience the same problem.

      [1]

      WARN  [com.arjuna.ats.arjuna] (Periodic Recovery) ARJUNA012251: allObjUids caught exception: java.lang.IllegalStateException
        at org.jboss.msc.value.InjectedValue.getValue(InjectedValue.java:47)
        at org.jboss.as.naming.service.DefaultNamespaceContextSelectorService$1.getContext(DefaultNamespaceContextSelectorService.java:56)
        at org.jboss.as.naming.InitialContext$DefaultInitialContext.findContext(InitialContext.java:187)
        at org.jboss.as.naming.InitialContext$DefaultInitialContext.lookup(InitialContext.java:233)
        at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:193)
        at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:189)
        at javax.naming.InitialContext.lookup(InitialContext.java:417)
        at javax.naming.InitialContext.lookup(InitialContext.java:417)
        at com.arjuna.ats.internal.arjuna.objectstore.jdbc.accessors.DataSourceJDBCAccess.getConnection(DataSourceJDBCAccess.java:53)
        at com.arjuna.ats.internal.arjuna.objectstore.jdbc.JDBCImple_driver.allObjUids(JDBCImple_driver.java:345)
        at com.arjuna.ats.internal.arjuna.objectstore.jdbc.JDBCStore.allObjUids(JDBCStore.java:166)
        at com.arjuna.ats.internal.arjuna.objectstore.jdbc.JDBCStore.allObjUids(JDBCStore.java:122)
        at com.arjuna.ats.arjuna.objectstore.ObjectStoreIterator.<init>(ObjectStoreIterator.java:53)
        at com.arjuna.ats.internal.jta.recovery.arjunacore.CommitMarkableResourceRecordRecoveryModule.periodicWorkFirstPass(CommitMarkableResourceRecordRecoveryModule.java:390)
        at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:747)
        at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery.java:375)
      
      ERROR [stderr] (Periodic Recovery) Exception in thread "Periodic Recovery" java.lang.NullPointerException
      ERROR [stderr] (Periodic Recovery) 	at com.arjuna.ats.arjuna.recovery.TransactionStatusConnectionManager.getTransactionStatus(TransactionStatusConnectionManager.java:92)
      ERROR [stderr] (Periodic Recovery) 	at com.arjuna.ats.internal.jta.recovery.arjunacore.CommitMarkableResourceRecordRecoveryModule.periodicWorkFirstPass(CommitMarkableResourceRecordRecoveryModule.java:399)
      ERROR [stderr] (Periodic Recovery) 	at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:747)
      ERROR [stderr] (Periodic Recovery) 	at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery.java:375)
      

        1. jdbc-module.zip
          3.32 MB
        2. jdbc-store-stuck-server.jstack
          19 kB
        3. server.log
          35 kB
        4. standalone-full.xml
          24 kB

              thjenkin@redhat.com Tom Jenkinson
              ochaloup@redhat.com Ondrej Chaloupka (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: