[JBoss JIRA] Created: (JBTM-226) Possible race condition between top-down and bottom-up recovery
by Mark Little (JIRA)
Possible race condition between top-down and bottom-up recovery
---------------------------------------------------------------
Key: JBTM-226
URL: http://jira.jboss.com/jira/browse/JBTM-226
Project: JBoss Transaction Manager
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: JTA Implementation
Affects Versions: 4.2.3.SP4
Environment: Mac OS X, JDK 1.4.2.
Reporter: Mark Little
Assigned To: Mark Little
Priority: Critical
In local JTA recovery for non-serializable XAResources, the XAResourceRecovery implementation is needed to obtain a new XAResource. If a new resource isn't obtained (because the XAResourceRecovery instances haven't all been triggered yet), top-down recovery retries on subsequent recovery sweeps. Meanwhile, bottom up recovery can kick in and use an XAResource from a XAResourceRecovery that is now available and fail to locate any information on the transaction that will drive it top-down. Upon failing to find the transaction, it uses presumed abort and rolls back the instance, when in fact it should wait and commit it. But it doesn't do that until several phases have passed, and in which case most of the time top-down recovery will have re-run, found the XAResource and committed the transaction.
I'm fairly sure this is a race condition and does exist, but am still checking. Work around exists at the moment though.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 3 months
[JBoss JIRA] Created: (JBTM-553) Testsuite running on openjdk is missing class javax.crypto.JceSecurity
by Ivo Studensky (JIRA)
Testsuite running on openjdk is missing class javax.crypto.JceSecurity
----------------------------------------------------------------------
Key: JBTM-553
URL: https://jira.jboss.org/jira/browse/JBTM-553
Project: JBoss Transaction Manager
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Testing
Affects Versions: 4.6.1
Environment: RHEL5 x86_64, openjdk
Reporter: Ivo Studensky
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class javax.crypto.JceSecurity
at javax.crypto.KeyGenerator.nextSpi(KeyGenerator.java:310)
at javax.crypto.KeyGenerator.<init>(KeyGenerator.java:140)
at javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:191)
at sun.security.ssl.JsseJce.getKeyGenerator(JsseJce.java:240)
at sun.security.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:108)
at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:593)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:533)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:471)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:904)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1116)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1143)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1127)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1394)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1204)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(SQLServerConnection.java:1054)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:758)
at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:578)
at com.microsoft.sqlserver.jdbc.SQLServerPooledConnection.createNewConnection(SQLServerPooledConnection.java:67)
at com.microsoft.sqlserver.jdbc.SQLServerPooledConnection.<init>(SQLServerPooledConnection.java:43)
at com.microsoft.sqlserver.jdbc.SQLServerXAConnection.<init>(SQLServerXAConnection.java:27)
at com.microsoft.sqlserver.jdbc.SQLServerXADataSource.getXAConnection(SQLServerXADataSource.java:51)
at com.arjuna.ats.internal.jdbc.IndirectRecoverableConnection.createConnection(IndirectRecoverableConnection.java:431)
at com.arjuna.ats.internal.jdbc.IndirectRecoverableConnection.getConnection(IndirectRecoverableConnection.java:298)
at com.arjuna.ats.internal.jdbc.ConnectionImple.getConnection(ConnectionImple.java:704)
at com.arjuna.ats.internal.jdbc.ConnectionImple.registerDatabase(ConnectionImple.java:806)
at com.arjuna.ats.internal.jdbc.ConnectionImple.createStatement(ConnectionImple.java:162)
at org.jboss.jbossts.qa.JDBCResources01Setups.Setup02.main(Setup02.java:94)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 4 months
[JBoss JIRA] Created: (JBTM-532) Connection leak if the DBMS is not mapped into the ModifierFactory or if the DBMS does not support multiple connections
by Mauro Molinari (JIRA)
Connection leak if the DBMS is not mapped into the ModifierFactory or if the DBMS does not support multiple connections
-----------------------------------------------------------------------------------------------------------------------
Key: JBTM-532
URL: https://jira.jboss.org/jira/browse/JBTM-532
Project: JBoss Transaction Manager
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: JTA
Affects Versions: 4.6.0, 4.5.0
Environment: Spring + JBossJTA
Reporter: Mauro Molinari
Priority: Blocker
When a close() is issued on a ConnectionImple() before transaction termination (and this can happen because of Spring JTA infrastructure calling org.springframework.jdbc.datasource.DataSourceUtils.ConnectionSynchronization.beforeCompletion()) and either:
- the ModifierFactory has no information about the DBMS in use (PostgreSQL, for instance...)
or
- the modifier for the DBMS says that it does not support multiple connections in a single transaction
then, the synchronization that should close the connection after transaction completion is not registered and the connection is lost!
This is at lines 349-359 of com.arjuna.ats.internal.jdbc.ConnectionImple in JBossTS 4.5.0 GA codebase.
IMHO, the synchronization should always be registered unless we are sure that multiple connections in a single transaction are not supported. I have no idea of what should happen in the latter case...
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 4 months