Commit 995e72c4 authored by Bradley C. Kuszmaul's avatar Bradley C. Kuszmaul Committed by Yoni Fogel

This version of isolation causes a deadlock for BDB (incorrect), but not for TokuDB (correct)

git-svn-id: file:///svn/toku/tokudb@16605 c7de825b-a66e-492c-adef-691d508d4ae1
parent 8aae8bae
......@@ -12,23 +12,43 @@ int test_main (int argc, char *argv[]) {
toku_os_mkdir(ENVDIR, S_IRWXU+S_IRWXG+S_IRWXO);
DB_ENV *env;
r = db_env_create(&env, 0); CKERR(r);
env->set_errfile(env, stderr);
r = env->open(env, ENVDIR, envflags, S_IRWXU+S_IRWXG+S_IRWXO); CKERR(r);
DB_TXN *txna;
r = env->txn_begin(env, NULL, &txna, 0); CKERR(r);
env->set_errfile(env, stderr);
DB *db;
{
DB_TXN *txna;
r = env->txn_begin(env, NULL, &txna, 0); CKERR(r);
r = db_create(&db, env, 0); CKERR(r);
r = db->open(db, txna, "foo.db", NULL, DB_BTREE, DB_CREATE, 0666); CKERR(r);
DBT key,val;
r = db->put(db, txna, dbt_init(&key, "a", 4), dbt_init(&val, "a", 4), 0); CKERR(r);
r = txna->commit(txna, 0); CKERR(r);
}
DB_TXN *txna, *txnx;
r = env->txn_begin(env, NULL, &txna, DB_READ_UNCOMMITTED); CKERR(r);
r = env->txn_begin(env, NULL, &txnx, 0); CKERR(r);
// X writes a value, and B tries to read it in uncommitted
{
DB_TXN *txnb;
r = env->txn_begin(env, txna, &txnb, 0); CKERR(r);
r = env->txn_begin(env, txna, &txnb, DB_READ_UNCOMMITTED); CKERR(r);
{
DBT key,val;
r = db->put(db, txnx, dbt_init(&key, "x", 4), dbt_init(&val, "x", 4), 0); CKERR(r);
dbt_init_malloc(&val);
r = db->get(db, txnb, dbt_init(&key, "x", 4), &val, 0); CKERR(r);
}
r = txnb->commit(txnb, 0); CKERR(r);
}
{
DB_TXN *txnc;
r = env->txn_begin(env, txna, &txnc, DB_READ_UNCOMMITTED); CKERR(r);
r = txnc->commit(txnc, 0); CKERR(r);
}
r = txna->commit(txna, 0); CKERR(r);
r = txnx->commit(txnx, 0); CKERR(r);
r = db->close(db, 0); CKERR(r);
r = env->close(env, 0); CKERR(r);
return 0;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment