mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 03:51:50 +01:00
closes #5146, fix test and fix bug
git-svn-id: file:///svn/toku/tokudb@44973 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
3d9bf660f6
commit
de706bd5d8
2 changed files with 27 additions and 4 deletions
22
ft/recover.c
22
ft/recover.c
|
@ -612,10 +612,24 @@ static int toku_recover_xstillopenprepared (struct logtype_xstillopenprepared *l
|
|||
l->crc,
|
||||
l->len,
|
||||
renv);
|
||||
if (r==0)
|
||||
return toku_txn_prepare_txn(txn, l->xa_xid);
|
||||
else
|
||||
return r;
|
||||
if (r != 0) {
|
||||
goto exit;
|
||||
}
|
||||
switch (renv->ss.ss) {
|
||||
case FORWARD_BETWEEN_CHECKPOINT_BEGIN_END: {
|
||||
r = toku_txn_prepare_txn(txn, l->xa_xid);
|
||||
break;
|
||||
}
|
||||
case FORWARD_NEWER_CHECKPOINT_END: {
|
||||
assert(txn->state == TOKUTXN_PREPARING);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
exit:
|
||||
return r;
|
||||
}
|
||||
|
||||
static int toku_recover_backward_xstillopen (struct logtype_xstillopen *UU(l), RECOVER_ENV UU(renv)) {
|
||||
|
|
|
@ -86,6 +86,15 @@ static void run_recover (void) {
|
|||
int r;
|
||||
r = db_env_create(&env, 0); CKERR(r);
|
||||
r = env->open(env, ENVDIR, envflags + DB_RECOVER, S_IRWXU+S_IRWXG+S_IRWXO); CKERR(r);
|
||||
// recover the prepared transaction and commit it
|
||||
DB_PREPLIST l[1];
|
||||
long count=-1;
|
||||
CKERR(env->txn_recover(env, l, 1, &count, DB_FIRST));
|
||||
printf("%s:%d count=%ld\n", __FILE__, __LINE__, count);
|
||||
assert(count==1);
|
||||
assert(l[0].gid[0]==42);
|
||||
r = l->txn->commit(l->txn, 0);
|
||||
CKERR(r);
|
||||
r = env->close(env, 0); CKERR(r);
|
||||
exit(0);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue