1 2 Previous Next 18 Replies Latest reply on Jul 31, 2009 4:05 AM by Frank Henry

    Could not find new XAResource to use for recovering non-seri

    ezza ezaezazea Novice

      Sorry about yet another thread about this warning, but i edited jbossjta-properties as indicated in the wiki, to no avail.

      <property
       name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
       value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>

      I'm using JBoss 4.2.3.GA and JBM 1.4.2.GA-SP1

      The warning occurs even with only one node in the cluster. Starting JBoss with an empty JBM database and doing nothing, i still get the warning periodically.


        • 2. Re: Could not find new XAResource to use for recovering non-
          Yong Hao Gao Master

          hi, i'm sorry can you put here the link you are refering the warning to? Thanks.

          • 3. Re: Could not find new XAResource to use for recovering non-
            ezza ezaezazea Novice

            Here is the complete warning:

            WARN [loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource < 131075, 28, 26, 1-7f000101:df6e:496776d2:5977f000101:df6e:496776d2:5a4 >
            


            • 4. Re: Could not find new XAResource to use for recovering non-
              ezza ezaezazea Novice

              On second thought I'm not sure that was what you were asking..

              • 5. Re: Could not find new XAResource to use for recovering non-
                Yong Hao Gao Master

                Hi, actually I'm asking for the link to your original post so I can take a look of the history of this topic. Anyway, don't mind it much, as I can search it myself. Thanks

                • 6. Re: Could not find new XAResource to use for recovering non-
                  ezza ezaezazea Novice

                  Ah that was what you meant. It wasn't my thread, but browsing the wiki and forum it seemed to be a recurring theme.
                  Anyway this links has an explanation that seems convincing to me, but it didn't work (even with one node):
                  http://www.jboss.org/community/docs/DOC-13171#comment-1301

                  • 7. Re: Could not find new XAResource to use for recovering non-
                    Clebert Suconic Master

                    Maybe you missed some property there?

                    I was looking on how this is configured on EAP, and this is what we have there:

                     <properties depends="arjuna" name="jta">^M
                     <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"^M
                     value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
                     <!--
                     Support subtransactions in the JTA layer?
                     Default is NO.
                     -->
                     <property name="com.arjuna.ats.jta.supportSubtransactions" value="NO"/>
                     <property name="com.arjuna.ats.jta.jtaTMImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple"/>
                     <!--
                     com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple
                     -->
                     <property name="com.arjuna.ats.jta.jtaUTImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple"/>
                     <!--
                     com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple
                     -->
                     </properties>
                    


                    Also.. make sure you have DefaultJMSProvider at your jms-ds.xml.

                    • 8. Re: Could not find new XAResource to use for recovering non-
                      ezza ezaezazea Novice

                      I already have these parameters, here is my jbossjta-properties.xml:

                      <?xml version="1.0" encoding="UTF-8"?>
                      <transaction-service>
                       <properties depends="common" name="arjuna">
                       <!--
                       Transaction Reaper Timeout (default is 120000 ms).
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.coordinator.txReaperTimeout" value="120000"/>
                       <!--
                       Transaction Reaper Mode, can be: NORMAL or DYNAMIC (default is NORMAL).
                       -->
                       <property name="com.arjuna.ats.arjuna.coordinator.txReaperMode" value="DYNAMIC"/>
                       <!--
                       (default is NO)
                       -->
                       <property name="com.arjuna.ats.arjuna.coordinator.asyncCommit" value="NO"/>
                       <!--
                       (default is NO)
                       -->
                       <property name="com.arjuna.ats.arjuna.coordinator.asyncPrepare" value="NO"/>
                       <!--
                       (default is YES)
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.coordinator.commitOnePhase" value="YES"/>
                       <!--
                       (default is defaultStore)
                       -->
                       <property name="com.arjuna.ats.arjuna.objectstore.localOSRoot" value="defaultStore"/>
                       <!--
                       default is under user.home - must be writeable!)
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.objectstore.objectStoreDir" value="PutObjectStoreDirHere"/>
                       <!--
                       (default is ON)
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.objectstore.objectStoreSync" value="ON"/>
                       <!--
                       (default is ShadowNoFileLockStore)
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.objectstore.objectStoreType" value="ShadowNoFileLockStore"/>
                       <!--
                       (default is 255)
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.objectstore.hashedDirectories" value="255"/>
                       <!--
                       (default is ON)
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.objectstore.transactionSync" value="ON"/>
                       <!--
                       (Must be unique across all Arjuna instances.)
                       -->
                       <property name="com.arjuna.ats.arjuna.xa.nodeIdentifier" value="1"/>
                       <!-- property
                       name="com.arjuna.ats.arjuna.coordinator.actionStore"
                       value="HashedActionStore"
                       value="JDBCActionStore"
                       -->
                       <!-- property
                       name="com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
                       value="JDBCAccess"
                       -->
                       <!-- property
                       name="com.arjuna.ats.arjuna.objectstore.objectStoreType"
                       value="ShadowNoFileLockStore"
                       value="JDBCStore"
                       -->
                       <!-- property
                       name="com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
                       value="JDBCAccess"
                       -->
                       <!-- property
                       name="com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeInitial"
                       value="1"
                       -->
                       <!-- property
                       name="com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum"
                       value="1"
                       -->
                       <!-- property
                       name="com.arjuna.ats.arjuna.objectstore.jdbcPoolPutConnections"
                       value="false"
                       -->
                       <!-- property
                       name="com.arjuna.ats.arjuna.internal.arjuna.objectstore.cacheStore.size"
                       value=""
                       -->
                       <!-- property
                       name="com.arjuna.ats.arjuna.internal.arjuna.objectstore.cacheStore.period"
                       value=""
                       -->
                       <!--
                       The location for creating temporary files, e.g., Uids.
                       Default is under user.home.
                       IMPORTANT: make sure the directory is lockable, e.g., /tmp on Unix
                       may not be!
                       -->
                       <!--
                       <property
                       name="com.arjuna.ats.arjuna.common.varDir"
                       value="var"/>
                       -->
                       </properties>
                       <properties name="common">
                       <!-- CLF 2.0 properties -->
                       <property name="com.arjuna.common.util.logging.DebugLevel"
                       type="System" value="0x00000000"/>
                       <property name="com.arjuna.common.util.logging.FacilityLevel"
                       type="System" value="0xffffffff"/>
                       <property name="com.arjuna.common.util.logging.VisibilityLevel"
                       type="System" value="0xffffffff"/>
                       <property name="com.arjuna.common.util.logger" type="System" value="log4j"/>
                       </properties>
                       <properties depends="arjuna" name="txoj">
                       <!--
                       (default is LockStore of installation - must be writeable!)
                       -->
                       <!--
                       <property
                       name="com.arjuna.ats.txoj.lockstore.lockStoreDir"
                       value="LockStore"/>
                       -->
                       <!--
                       (default is BasicLockStore)
                       -->
                       <property name="com.arjuna.ats.txoj.lockstore.lockStoreType" value="BasicLockStore"/>
                       <!--
                       (default is NO)
                       -->
                       <property name="com.arjuna.ats.txoj.lockstore.multipleLockStore" value="NO"/>
                       <!--
                       (default is YES)
                       -->
                       <property name="com.arjuna.ats.txoj.lockstore.singleLockStore" value="YES"/>
                       <!--
                       (default is YES)
                       -->
                       <property
                       name="com.arjuna.ats.txoj.lockstore.allowNestedLocking" value="YES"/>
                       </properties>
                       <properties depends="arjuna" name="jta">
                       <!--
                       Support subtransactions in the JTA layer?
                       Default is NO.
                       -->
                       <property name="com.arjuna.ats.jta.supportSubtransactions" value="NO"/>
                       <property name="com.arjuna.ats.jta.jtaTMImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple"/>
                       <!--
                       com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple
                       -->
                       <property name="com.arjuna.ats.jta.jtaUTImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple"/>
                       <!--
                       com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple
                       -->
                       <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
                       value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
                       </properties>
                       <properties depends="arjuna,txoj,jta" name="recoverymanager">
                       <!--
                       Properties used only by the RecoveryManager.
                       -->
                       <!--
                       Periodic recovery settings.
                       Time values in this section are in seconds.
                       -->
                       <!--
                       Interval in seconds between initiating the periodic recovery modules.
                       Default is 120 seconds.
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod" value="120"/>
                       <!--
                       Interval in seconds between first and second pass of periodic recovery.
                       Default is 10 seconds.
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.recovery.recoveryBackoffPeriod" value="10"/>
                       <!--
                       Periodic recovery modules to use. Invoked in sort-order of names.
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.recovery.recoveryExtension1" value="com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule"/>
                       <property
                       name="com.arjuna.ats.arjuna.recovery.recoveryExtension2" value="com.arjuna.ats.internal.txoj.recovery.TORecoveryModule"/>
                       <property
                       name="com.arjuna.ats.arjuna.recovery.recoveryExtension3" value="com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule"/>
                       <!--
                       Expired entry removal
                       -->
                       <!--
                       Expiry scanners to use (order of invocation is random).
                       Names must begin with "com.arjuna.ats.arjuna.recovery.expiryScanner"
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager" value="com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner"/>
                       <!--
                       Interval, in hours, between running the expiry scanners.
                       This can be quite long. The absolute value determines the interval -
                       if the value is negative, the scan will NOT be run until after one
                       interval has elapsed. If positive the first scan will be immediately
                       after startup. Zero will prevent any scanning.
                       Default = 12 = run immediately, then every 12 hours.
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.recovery.expiryScanInterval" value="12"/>
                       <!--
                       Age, in hours, for removal of transaction status manager item.
                       This should be longer than any ts-using process will remain running.
                       Zero = Never removed. Default is 12.
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.recovery.transactionStatusManagerExpiryTime" value="12"/>
                       <!--
                       Use this to fix the port on which the TransactionStatusManager listens,
                       The default behaviour is to use any free port.
                       -->
                       <property
                       name="com.arjuna.ats.arjuna.recovery.transactionStatusManagerPort" value="0"/>
                       </properties>
                       <properties depends="jta" name="jdbc">
                       <!--
                       property name="com.arjuna.ats.jdbc.isolationLevel" value="TRANSACTION_SERIALIZABLE"/>
                       -->
                       </properties>
                      </transaction-service>


                      And my hajndi-jms-ds.xml does define DefaultJMSProvider:
                      <?xml version="1.0" encoding="UTF-8"?>
                      
                      <connection-factories>
                      
                       <!-- ==================================================================== -->
                       <!-- JMS Stuff -->
                       <!-- ==================================================================== -->
                      
                       <!-- The JMS provider loader -->
                       <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
                       name="jboss.messaging:service=JMSProviderLoader,name=HAJNDIJMSProvider">
                       <attribute name="ProviderName">DefaultJMSProvider</attribute>
                       <attribute name="ProviderAdapterClass">
                       org.jboss.jms.jndi.JNDIProviderAdapter
                       </attribute>
                       <!-- The combined connection factory -->
                       <attribute name="FactoryRef">XAConnectionFactory</attribute>
                       <!-- The queue connection factory -->
                       <attribute name="QueueFactoryRef">XAConnectionFactory</attribute>
                       <!-- The topic factory -->
                       <attribute name="TopicFactoryRef">XAConnectionFactory</attribute>
                       <!-- Access JMS via HAJNDI -->
                       <attribute name="Properties">
                       java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
                       java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
                       java.naming.provider.url=${jboss.bind.address:127.0.0.1}:1100
                       jnp.disableDiscovery=false
                       jnp.partitionName=${jboss.partition.name:DefaultPartition}
                       jnp.discoveryGroup=${jboss.partition.udpGroup:230.0.0.4}
                       jnp.discoveryPort=1102
                       jnp.discoveryTTL=16
                       jnp.discoveryTimeout=5000
                       jnp.maxRetries=1
                       </attribute>
                       </mbean>
                      
                       <!-- The server session pool for Message Driven Beans -->
                       <mbean code="org.jboss.jms.asf.ServerSessionPoolLoader"
                       name="jboss.messaging:service=ServerSessionPoolMBean,name=StdJMSPool">
                       <depends optional-attribute-name="XidFactory">jboss:service=XidFactory</depends>
                       <attribute name="PoolName">StdJMSPool</attribute>
                       <attribute name="PoolFactoryClass">
                       org.jboss.jms.asf.StdServerSessionPoolFactory
                       </attribute>
                       </mbean>
                      
                       <!-- JMS XA Resource adapter, use this to get transacted JMS in beans -->
                       <tx-connection-factory>
                       <jndi-name>JmsXA</jndi-name>
                       <xa-transaction/>
                       <rar-name>jms-ra.rar</rar-name>
                       <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>
                       <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property>
                       <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/DefaultJMSProvider</config-property>
                       <max-pool-size>20</max-pool-size>
                       <security-domain-and-application>JmsXARealm</security-domain-and-application>
                      <!-- <use-java-context>false</use-java-context>-->
                       </tx-connection-factory>
                      
                      </connection-factories>


                      • 9. Re: Could not find new XAResource to use for recovering non-
                        Clebert Suconic Master

                        I'm really not sure if this should matter, but the only difference from your file and the one on EAP (found this using kompare) is the order on where you described JBM. On the EAP it is the first item on the properties.


                        *Maybe* Arjuna is recovering the XIDs from the file-storage before JBM had a chance to recover them?


                        ...
                         <properties depends="arjuna" name="jta">
                        
                         <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
                        
                         value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
                         <!--
                         Support subtransactions in the JTA layer?
                         Default is NO.
                         -->
                         <property name="com.arjuna.ats.jta.supportSubtransactions" value="NO"/>
                         <property name="com.arjuna.ats.jta.jtaTMImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple"/>
                         <!--
                         com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple
                         -->
                         <property name="com.arjuna.ats.jta.jtaUTImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple"/>
                         <!--
                         com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple
                         -->
                         </properties>
                        ...
                        




                        If that's not the issue, you will need to look for other errors on the log and see if there is any other warnings.

                        • 10. Re: Could not find new XAResource to use for recovering non-
                          ezza ezaezazea Novice

                          I have tried changing the order, it doesn't change anything.
                          I have no errors in the log files, and the only other warning is

                          2009-04-07 11:16:13,480 WARN [com.arjuna.ats.jbossatx.jta.TransactionManagerService] XAExceptionFormatters are not supported by the JBossTS Transaction Service - this warning can safely be ignored


                          I have absolutely no clue what to do about it but it doesn't sound healthy.

                          • 11. Re: Could not find new XAResource to use for recovering non-
                            ezza ezaezazea Novice

                            In case my last sentece was confusing I meant what sounds unhealthy isn't the " XAExceptionFor
                            matters are not supported by the JBossTS Transaction Service - this warning can safely be ignored" but the fact that some unknown stuff failed to be serialized.

                            • 12. Re: Could not find new XAResource to use for recovering non-
                              Clebert Suconic Master

                              Did you try removing your temp-directories and data-directories after changing the configs?

                              Let me know and I will do some testing after your input.

                              • 13. Re: Could not find new XAResource to use for recovering non-
                                ezza ezaezazea Novice

                                I have tried removing the following directories of my all server:
                                temp,work,data.

                                It worked! I no longer have the periodic warning.
                                Maybe the data directory contained old transaction data that couldn't be recovered because the list and definitions of destinations has changed. Thanks for your help.

                                • 14. Re: Could not find new XAResource to use for recovering non-
                                  Clebert Suconic Master

                                  Maybe the order wouldn't have affected you.

                                  But I would leave that alone just in case :-)

                                  1 2 Previous Next