Failover due to controller crash during a commit statement can issue the
following warning "Transaction 4 was aborted by database"
----------------------------------------------------------------------------------------------------------------------------------
Key: SEQUOIA-1000
URL: https://forge.continuent.org/jira/browse/SEQUOIA-1000
Project: Sequoia
Type: Bug
Versions: Sequoia 2.10.9
Reporter: Stephane Giron
Assigned to: Stephane Giron
Fix For: sequoia 2.10.10
This is an example of how it can be reproduced:
conn.createStatement().executeUpdate("create table test(i integer)");
conn.setAutoCommit(false);
conn.createStatement().executeUpdate("insert into test values(1)");
conn.commit(); --> simulate controller crash before the driver gets the
result
conn.setAutoCommit(true);
conn.createStatement().executeQuery("select count(*) from test");
In such case, the following will happen (when executing the
statement.executeQuery) :
2007-11-15 13:13:22,123 DEBUG virtualdatabase.VirtualDatabaseWorkerThread.DB1
RestoreConnectionState command
2007-11-15 13:13:22,126 DEBUG virtualdatabase.VirtualDatabaseWorkerThread.DB1
SetReadOnly command (value=true)
2007-11-15 13:13:22,129 DEBUG virtualdatabase.VirtualDatabaseWorkerThread.DB1
Retrieve commit command
2007-11-15 13:13:22,130 WARN virtualdatabase.VirtualDatabaseWorkerThread.DB1
Transaction 4 was aborted by database
2007-11-15 13:13:22,131 DEBUG virtualdatabase.VirtualDatabaseWorkerThread.DB1
StatementExecuteQuery command
2007-11-15 13:13:22,136 WARN controller.RequestManager.DB1 No transaction
metadata found to abort transaction 4. Creating a fake context for abort.
2007-11-15 13:13:22,138 WARN controller.RequestManager.DB1 No transaction
metadata found to abort transaction 4. Creating a fake context for abort.
2007-11-15 13:13:22,141 WARN controller.virtualdatabase.DB1 Failed to commit
transaction 4, transaction has been aborted (No transaction marker metadata
found for transaction 4)
2007-11-15 13:13:22,142 WARN virtualdatabase.VirtualDatabaseWorkerThread.DB1
Error during command execution (No transaction marker metadata found for
transaction 4)
and the client application will receive the following exception :
org.continuent.sequoia.common.exceptions.driver.DriverSQLException: Message of
cause: No transaction marker metadata found for transaction 4
at
org.continuent.sequoia.driver.Connection.statementExecuteQuery(Connection.java:2843)
at
org.continuent.sequoia.driver.Statement.executeQuery(Statement.java:522)
at
org.continuent.sequoia.driver.Statement.executeQuery(Statement.java:495)
at
com.continuent.sequoia.test.functional.failover.FailingControllerDuringRequestTest.testFailover(FailingControllerDuringRequestTest.java:256)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:164)
at
com.continuent.sequoia.test.util.ClusterTestCase.runTest(ClusterTestCase.java:151)
at
com.continuent.sequoia.test.util.AbstractTestCase.runTest(AbstractTestCase.java:445)
at
com.continuent.sequoia.test.util.ClusterTestCase.runBare(ClusterTestCase.java:177)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at
com.continuent.sequoia.test.util.AbstractTestCase.run(AbstractTestCase.java:185)
at
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by:
org.continuent.sequoia.common.exceptions.driver.protocol.BackendDriverException:
No transaction marker metadata found for transaction 4
SerializableStackTrace of each cause:
org.continuent.sequoia.common.exceptions.driver.protocol.BackendDriverException:
No transaction marker metadata found for transaction 4
at
org.continuent.sequoia.controller.requestmanager.RequestManager.getTransactionMetaData(RequestManager.java:1969)
at
org.continuent.sequoia.controller.requestmanager.distributed.DistributedRequestManager.commit(DistributedRequestManager.java:990)
at
org.continuent.sequoia.controller.virtualdatabase.VirtualDatabase.commit(VirtualDatabase.java:1248)
at
org.continuent.sequoia.controller.virtualdatabase.VirtualDatabaseWorkerThread.setRequestParameters(VirtualDatabaseWorkerThread.java:2150)
at
org.continuent.sequoia.controller.virtualdatabase.VirtualDatabaseWorkerThread.setRequestParametersAndTransactionStarted(VirtualDatabaseWorkerThread.java:2165)
at
org.continuent.sequoia.controller.virtualdatabase.VirtualDatabaseWorkerThread.statementExecuteQuery(VirtualDatabaseWorkerThread.java:2199)
at
org.continuent.sequoia.controller.virtualdatabase.VirtualDatabaseWorkerThread.run(VirtualDatabaseWorkerThread.java:449)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://forge.continuent.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
_______________________________________________
Sequoia mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/sequoia