Search in sources :

Example 1 with TestDeadlock

use of org.h2.test.db.TestDeadlock in project h2database by h2database.

the class TestLob method testDeadlock.

/**
 * Test for issue 315: Java Level Deadlock on Database & Session Objects
 */
private void testDeadlock() throws Exception {
    deleteDb("lob");
    Connection conn = getConnection("lob");
    Statement stat = conn.createStatement();
    stat.execute("create table test(id int primary key, name clob)");
    stat.execute("insert into test select x, space(10000) from system_range(1, 3)");
    final Connection conn2 = getConnection("lob");
    Task task = new Task() {

        @Override
        public void call() throws Exception {
            Statement stat = conn2.createStatement();
            stat.setFetchSize(1);
            for (int i = 0; !stop; i++) {
                ResultSet rs = stat.executeQuery("select * from test where id > -" + i);
                while (rs.next()) {
                // ignore
                }
            }
        }
    };
    task.execute();
    stat.execute("create table test2(id int primary key, name clob)");
    for (int i = 0; i < 100; i++) {
        stat.execute("delete from test2");
        stat.execute("insert into test2 values(1, space(10000 + " + i + "))");
    }
    task.get();
    conn.close();
    conn2.close();
}
Also used : Task(org.h2.util.Task) PreparedStatement(java.sql.PreparedStatement) Statement(java.sql.Statement) Connection(java.sql.Connection) JdbcConnection(org.h2.jdbc.JdbcConnection) ResultSet(java.sql.ResultSet) Savepoint(java.sql.Savepoint)

Example 2 with TestDeadlock

use of org.h2.test.db.TestDeadlock in project h2database by h2database.

the class Session method cleanTempTables.

private void cleanTempTables(boolean closeSession) {
    if (localTempTables != null && localTempTables.size() > 0) {
        synchronized (database) {
            Iterator<Table> it = localTempTables.values().iterator();
            while (it.hasNext()) {
                Table table = it.next();
                if (closeSession || table.getOnCommitDrop()) {
                    modificationId++;
                    table.setModified();
                    it.remove();
                    // Exception thrown in org.h2.engine.Database.removeMeta
                    // if line below is missing with TestDeadlock
                    database.lockMeta(this);
                    table.removeChildrenAndResources(this);
                    if (closeSession) {
                        // need to commit, otherwise recovery might
                        // ignore the table removal
                        database.commit(this);
                    }
                } else if (table.getOnCommitTruncate()) {
                    table.truncate(this);
                }
            }
        }
    }
}
Also used : MVTable(org.h2.mvstore.db.MVTable) Table(org.h2.table.Table)

Example 3 with TestDeadlock

use of org.h2.test.db.TestDeadlock in project h2database by h2database.

the class TestAll method test.

/**
 * Run all tests with the current settings.
 */
private void test() throws SQLException {
    System.out.println();
    System.out.println("Test " + toString() + " (" + Utils.getMemoryUsed() + " KB used)");
    beforeTest();
    // db
    addTest(new TestScriptSimple());
    addTest(new TestScript());
    addTest(new TestAlter());
    addTest(new TestAlterSchemaRename());
    addTest(new TestAutoRecompile());
    addTest(new TestBackup());
    addTest(new TestBigDb());
    addTest(new TestBigResult());
    addTest(new TestCases());
    addTest(new TestCheckpoint());
    addTest(new TestCompatibility());
    addTest(new TestCompatibilityOracle());
    addTest(new TestCsv());
    addTest(new TestDeadlock());
    if (vmlens) {
        return;
    }
    addTest(new TestDrop());
    addTest(new TestDuplicateKeyUpdate());
    addTest(new TestEncryptedDb());
    addTest(new TestExclusive());
    addTest(new TestFullText());
    addTest(new TestFunctionOverload());
    addTest(new TestFunctions());
    addTest(new TestInit());
    addTest(new TestIndex());
    addTest(new TestIndexHints());
    addTest(new TestLargeBlob());
    addTest(new TestLinkedTable());
    addTest(new TestListener());
    addTest(new TestLob());
    addTest(new TestMergeUsing());
    addTest(new TestMultiConn());
    addTest(new TestMultiDimension());
    addTest(new TestMultiThreadedKernel());
    addTest(new TestOpenClose());
    addTest(new TestOptimizations());
    addTest(new TestOptimizerHints());
    addTest(new TestOutOfMemory());
    addTest(new TestReadOnly());
    addTest(new TestRecursiveQueries());
    addTest(new TestGeneralCommonTableQueries());
    if (!memory) {
        // requires persistent store for reconnection tests
        addTest(new TestPersistentCommonTableExpressions());
    }
    addTest(new TestRights());
    addTest(new TestRunscript());
    addTest(new TestSQLInjection());
    addTest(new TestSessionsLocks());
    addTest(new TestSelectCountNonNullColumn());
    addTest(new TestSequence());
    addTest(new TestShow());
    addTest(new TestSpaceReuse());
    addTest(new TestSpatial());
    addTest(new TestSpeed());
    addTest(new TestTableEngines());
    addTest(new TestRowFactory());
    addTest(new TestTempTables());
    addTest(new TestTransaction());
    addTest(new TestTriggersConstraints());
    addTest(new TestTwoPhaseCommit());
    addTest(new TestView());
    addTest(new TestViewAlterTable());
    addTest(new TestViewDropView());
    addTest(new TestReplace());
    addTest(new TestSynonymForTable());
    addTest(new TestColumnNamer());
    // jaqu
    addTest(new AliasMapTest());
    addTest(new AnnotationsTest());
    addTest(new ClobTest());
    addTest(new ModelsTest());
    addTest(new SamplesTest());
    addTest(new UpdateTest());
    // jdbc
    addTest(new TestBatchUpdates());
    addTest(new TestCallableStatement());
    addTest(new TestCancel());
    addTest(new TestConcurrentConnectionUsage());
    addTest(new TestConnection());
    addTest(new TestDatabaseEventListener());
    addTest(new TestJavaObject());
    addTest(new TestLimitUpdates());
    addTest(new TestLobApi());
    addTest(new TestManyJdbcObjects());
    addTest(new TestMetaData());
    addTest(new TestNativeSQL());
    addTest(new TestPreparedStatement());
    addTest(new TestResultSet());
    addTest(new TestStatement());
    addTest(new TestGetGeneratedKeys());
    addTest(new TestTransactionIsolation());
    addTest(new TestUpdatableResultSet());
    addTest(new TestZloty());
    addTest(new TestCustomDataTypesHandler());
    addTest(new TestSetCollation());
    // jdbcx
    addTest(new TestConnectionPool());
    addTest(new TestDataSource());
    addTest(new TestXA());
    addTest(new TestXASimple());
    // server
    addTest(new TestAutoServer());
    addTest(new TestNestedLoop());
    // mvcc & row level locking
    addTest(new TestMvcc1());
    addTest(new TestMvcc2());
    addTest(new TestMvcc3());
    addTest(new TestMvcc4());
    addTest(new TestMvccMultiThreaded());
    addTest(new TestMvccMultiThreaded2());
    addTest(new TestRowLocks());
    // synth
    addTest(new TestBtreeIndex());
    addTest(new TestConcurrentUpdate());
    addTest(new TestDiskFull());
    addTest(new TestCrashAPI());
    addTest(new TestFuzzOptimizations());
    addTest(new TestLimit());
    addTest(new TestRandomCompare());
    addTest(new TestKillRestart());
    addTest(new TestKillRestartMulti());
    addTest(new TestMultiThreaded());
    addTest(new TestOuterJoins());
    addTest(new TestNestedJoins());
    addTest(new TestStringAggCompatibility());
    runAddedTests();
    // serial
    addTest(new TestDateStorage());
    addTest(new TestDriver());
    addTest(new TestJavaObjectSerializer());
    addTest(new TestLocale());
    addTest(new TestMemoryUsage());
    addTest(new TestMultiThread());
    addTest(new TestPowerOff());
    addTest(new TestReorderWrites());
    addTest(new TestRandomSQL());
    addTest(new TestQueryCache());
    addTest(new TestUrlJavaObjectSerializer());
    addTest(new TestWeb());
    runAddedTests(1);
    afterTest();
}
Also used : TestDuplicateKeyUpdate(org.h2.test.db.TestDuplicateKeyUpdate) TestDeadlock(org.h2.test.db.TestDeadlock) TestPreparedStatement(org.h2.test.jdbc.TestPreparedStatement) TestXA(org.h2.test.jdbcx.TestXA) TestTransactionIsolation(org.h2.test.jdbc.TestTransactionIsolation) TestViewDropView(org.h2.test.db.TestViewDropView) TestRandomCompare(org.h2.test.synth.TestRandomCompare) TestSetCollation(org.h2.test.db.TestSetCollation) TestSelectCountNonNullColumn(org.h2.test.db.TestSelectCountNonNullColumn) TestConcurrentConnectionUsage(org.h2.test.jdbc.TestConcurrentConnectionUsage) TestCompatibility(org.h2.test.db.TestCompatibility) TestUpdatableResultSet(org.h2.test.jdbc.TestUpdatableResultSet) TestMvccMultiThreaded(org.h2.test.mvcc.TestMvccMultiThreaded) TestDatabaseEventListener(org.h2.test.jdbc.TestDatabaseEventListener) TestCheckpoint(org.h2.test.db.TestCheckpoint) TestListener(org.h2.test.db.TestListener) TestCustomDataTypesHandler(org.h2.test.jdbc.TestCustomDataTypesHandler) TestOpenClose(org.h2.test.db.TestOpenClose) TestEncryptedDb(org.h2.test.db.TestEncryptedDb) TestExclusive(org.h2.test.db.TestExclusive) TestViewAlterTable(org.h2.test.db.TestViewAlterTable) TestGetGeneratedKeys(org.h2.test.jdbc.TestGetGeneratedKeys) TestFunctions(org.h2.test.db.TestFunctions) TestManyJdbcObjects(org.h2.test.jdbc.TestManyJdbcObjects) TestLobApi(org.h2.test.jdbc.TestLobApi) TestLocale(org.h2.test.unit.TestLocale) TestLimit(org.h2.test.synth.TestLimit) TestDataSource(org.h2.test.jdbcx.TestDataSource) TestTransaction(org.h2.test.db.TestTransaction) TestJavaObject(org.h2.test.jdbc.TestJavaObject) TestRowLocks(org.h2.test.rowlock.TestRowLocks) TestWeb(org.h2.test.server.TestWeb) TestAutoServer(org.h2.test.server.TestAutoServer) TestNestedLoop(org.h2.test.server.TestNestedLoop) TestMultiDimension(org.h2.test.db.TestMultiDimension) UpdateTest(org.h2.test.jaqu.UpdateTest) TestCases(org.h2.test.db.TestCases) TestJavaObjectSerializer(org.h2.test.jdbc.TestJavaObjectSerializer) TestUrlJavaObjectSerializer(org.h2.test.jdbc.TestUrlJavaObjectSerializer) TestMultiThread(org.h2.test.db.TestMultiThread) TestLob(org.h2.test.db.TestLob) TestFuzzOptimizations(org.h2.test.synth.TestFuzzOptimizations) TestRunscript(org.h2.test.db.TestRunscript) TestTableEngines(org.h2.test.db.TestTableEngines) TestMemoryUsage(org.h2.test.db.TestMemoryUsage) TestConnection(org.h2.test.jdbc.TestConnection) TestRandomSQL(org.h2.test.synth.TestRandomSQL) TestRights(org.h2.test.db.TestRights) TestXASimple(org.h2.test.jdbcx.TestXASimple) TestLargeBlob(org.h2.test.db.TestLargeBlob) TestBatchUpdates(org.h2.test.jdbc.TestBatchUpdates) TestStringAggCompatibility(org.h2.test.synth.TestStringAggCompatibility) TestMvccMultiThreaded2(org.h2.test.mvcc.TestMvccMultiThreaded2) TestSequence(org.h2.test.db.TestSequence) AliasMapTest(org.h2.test.jaqu.AliasMapTest) TestMergeUsing(org.h2.test.db.TestMergeUsing) TestMetaData(org.h2.test.jdbc.TestMetaData) TestMultiThreadedKernel(org.h2.test.db.TestMultiThreadedKernel) TestConcurrentUpdate(org.h2.test.synth.TestConcurrentUpdate) TestResultSet(org.h2.test.jdbc.TestResultSet) ModelsTest(org.h2.test.jaqu.ModelsTest) TestSpaceReuse(org.h2.test.db.TestSpaceReuse) TestDriver(org.h2.test.jdbc.TestDriver) TestGeneralCommonTableQueries(org.h2.test.db.TestGeneralCommonTableQueries) TestBigDb(org.h2.test.db.TestBigDb) TestOutOfMemory(org.h2.test.db.TestOutOfMemory) TestFunctionOverload(org.h2.test.db.TestFunctionOverload) TestPowerOff(org.h2.test.db.TestPowerOff) TestPersistentCommonTableExpressions(org.h2.test.db.TestPersistentCommonTableExpressions) TestKillRestartMulti(org.h2.test.synth.TestKillRestartMulti) TestBtreeIndex(org.h2.test.synth.TestBtreeIndex) TestOptimizations(org.h2.test.db.TestOptimizations) TestMultiThreaded(org.h2.test.synth.TestMultiThreaded) TestLinkedTable(org.h2.test.db.TestLinkedTable) TestTriggersConstraints(org.h2.test.db.TestTriggersConstraints) SamplesTest(org.h2.test.jaqu.SamplesTest) TestSynonymForTable(org.h2.test.db.TestSynonymForTable) TestReadOnly(org.h2.test.db.TestReadOnly) TestCompatibilityOracle(org.h2.test.db.TestCompatibilityOracle) TestInit(org.h2.test.server.TestInit) TestCsv(org.h2.test.db.TestCsv) TestFullText(org.h2.test.db.TestFullText) TestIndexHints(org.h2.test.db.TestIndexHints) AnnotationsTest(org.h2.test.jaqu.AnnotationsTest) TestDiskFull(org.h2.test.synth.TestDiskFull) TestStatement(org.h2.test.jdbc.TestStatement) TestReplace(org.h2.test.db.TestReplace) TestScriptSimple(org.h2.test.scripts.TestScriptSimple) TestTwoPhaseCommit(org.h2.test.db.TestTwoPhaseCommit) TestSessionsLocks(org.h2.test.db.TestSessionsLocks) TestIndex(org.h2.test.db.TestIndex) TestOuterJoins(org.h2.test.synth.TestOuterJoins) TestAlterSchemaRename(org.h2.test.db.TestAlterSchemaRename) TestBackup(org.h2.test.db.TestBackup) TestAutoRecompile(org.h2.test.db.TestAutoRecompile) TestShow(org.h2.test.db.TestShow) TestSQLInjection(org.h2.test.db.TestSQLInjection) TestDrop(org.h2.test.db.TestDrop) TestConnectionPool(org.h2.test.jdbcx.TestConnectionPool) TestCancel(org.h2.test.jdbc.TestCancel) TestScript(org.h2.test.scripts.TestScript) TestCrashAPI(org.h2.test.synth.TestCrashAPI) TestRecursiveQueries(org.h2.test.db.TestRecursiveQueries) TestKillRestart(org.h2.test.synth.TestKillRestart) TestBigResult(org.h2.test.db.TestBigResult) ClobTest(org.h2.test.jaqu.ClobTest) TestNestedJoins(org.h2.test.synth.TestNestedJoins) TestRowFactory(org.h2.test.db.TestRowFactory) TestCallableStatement(org.h2.test.jdbc.TestCallableStatement) TestNativeSQL(org.h2.test.jdbc.TestNativeSQL) TestSpeed(org.h2.test.db.TestSpeed) TestTempTables(org.h2.test.db.TestTempTables) TestZloty(org.h2.test.jdbc.TestZloty) TestMultiConn(org.h2.test.db.TestMultiConn) TestMvcc3(org.h2.test.mvcc.TestMvcc3) TestMvcc4(org.h2.test.mvcc.TestMvcc4) TestMvcc1(org.h2.test.mvcc.TestMvcc1) TestSpatial(org.h2.test.db.TestSpatial) TestMvcc2(org.h2.test.mvcc.TestMvcc2) TestQueryCache(org.h2.test.db.TestQueryCache) TestAlter(org.h2.test.db.TestAlter) TestDateStorage(org.h2.test.db.TestDateStorage) TestColumnNamer(org.h2.test.utils.TestColumnNamer) TestLimitUpdates(org.h2.test.jdbc.TestLimitUpdates) TestReorderWrites(org.h2.test.poweroff.TestReorderWrites) TestView(org.h2.test.db.TestView) TestOptimizerHints(org.h2.test.db.TestOptimizerHints)

Aggregations

Connection (java.sql.Connection)1 PreparedStatement (java.sql.PreparedStatement)1 ResultSet (java.sql.ResultSet)1 Savepoint (java.sql.Savepoint)1 Statement (java.sql.Statement)1 JdbcConnection (org.h2.jdbc.JdbcConnection)1 MVTable (org.h2.mvstore.db.MVTable)1 Table (org.h2.table.Table)1 TestAlter (org.h2.test.db.TestAlter)1 TestAlterSchemaRename (org.h2.test.db.TestAlterSchemaRename)1 TestAutoRecompile (org.h2.test.db.TestAutoRecompile)1 TestBackup (org.h2.test.db.TestBackup)1 TestBigDb (org.h2.test.db.TestBigDb)1 TestBigResult (org.h2.test.db.TestBigResult)1 TestCases (org.h2.test.db.TestCases)1 TestCheckpoint (org.h2.test.db.TestCheckpoint)1 TestCompatibility (org.h2.test.db.TestCompatibility)1 TestCompatibilityOracle (org.h2.test.db.TestCompatibilityOracle)1 TestCsv (org.h2.test.db.TestCsv)1 TestDateStorage (org.h2.test.db.TestDateStorage)1