mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 06:44:16 +01:00
refs #5500 logger close rollback does not fail
git-svn-id: file:///svn/toku/tokudb@48238 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
1b8c8ac4b2
commit
3e6373c51d
7 changed files with 8 additions and 22 deletions
|
@ -200,9 +200,7 @@ toku_logger_open_rollback(TOKULOGGER logger, CACHETABLE cachetable, bool create)
|
|||
// so it will always be clean (!h->dirty) when about to be closed.
|
||||
// Rollback log can only be closed when there are no open transactions,
|
||||
// so it will always be empty (no data blocks) when about to be closed.
|
||||
// TODO: can't fail
|
||||
int
|
||||
toku_logger_close_rollback(TOKULOGGER logger) {
|
||||
void toku_logger_close_rollback(TOKULOGGER logger) {
|
||||
CACHEFILE cf = logger->rollback_cachefile; // stored in logger at rollback cachefile open
|
||||
if (cf) {
|
||||
FT_HANDLE ft_to_close;
|
||||
|
@ -226,7 +224,6 @@ toku_logger_close_rollback(TOKULOGGER logger) {
|
|||
//Set as dealt with already.
|
||||
logger->rollback_cachefile = NULL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// No locks held on entry
|
||||
|
|
|
@ -26,7 +26,7 @@ int toku_logger_open_with_last_xid(const char *directory, TOKULOGGER logger, TXN
|
|||
void toku_logger_shutdown(TOKULOGGER logger);
|
||||
int toku_logger_close(TOKULOGGER *loggerp);
|
||||
int toku_logger_open_rollback(TOKULOGGER logger, CACHETABLE cachetable, bool create);
|
||||
int toku_logger_close_rollback(TOKULOGGER logger);
|
||||
void toku_logger_close_rollback(TOKULOGGER logger);
|
||||
bool toku_logger_rollback_is_open (TOKULOGGER); // return true iff the rollback is open.
|
||||
|
||||
void toku_logger_fsync (TOKULOGGER logger);
|
||||
|
|
|
@ -232,8 +232,7 @@ static void recover_env_cleanup (RECOVER_ENV renv) {
|
|||
file_map_destroy(&renv->fmap);
|
||||
|
||||
if (renv->destroy_logger_at_end) {
|
||||
r = toku_logger_close_rollback(renv->logger);
|
||||
assert(r==0);
|
||||
toku_logger_close_rollback(renv->logger);
|
||||
r = toku_logger_close(&renv->logger);
|
||||
assert(r == 0);
|
||||
} else {
|
||||
|
|
|
@ -109,7 +109,7 @@ static void test_it (int N) {
|
|||
r = toku_close_ft_handle_nolsn(brt, NULL); CKERR(r);
|
||||
|
||||
r = toku_checkpoint(cp, logger, NULL, NULL, NULL, NULL, CLIENT_CHECKPOINT); CKERR(r);
|
||||
toku_logger_close_rollback(logger); CKERR(r);
|
||||
toku_logger_close_rollback(logger);
|
||||
r = toku_checkpoint(cp, logger, NULL, NULL, NULL, NULL, CLIENT_CHECKPOINT); CKERR(r);
|
||||
toku_cachetable_close(&ct);
|
||||
r = toku_logger_close(&logger); assert(r==0);
|
||||
|
|
|
@ -89,7 +89,6 @@ create_populate_tree(const char *logdir, const char *fname, int n) {
|
|||
assert(error == 0);
|
||||
|
||||
toku_logger_close_rollback(logger);
|
||||
assert(error == 0);
|
||||
|
||||
error = toku_checkpoint(cp, logger, NULL, NULL, NULL, NULL, CLIENT_CHECKPOINT);
|
||||
assert(error == 0);
|
||||
|
@ -193,7 +192,6 @@ test_provdel(const char *logdir, const char *fname, int n) {
|
|||
assert(error == 0);
|
||||
|
||||
toku_logger_close_rollback(logger);
|
||||
assert(error == 0);
|
||||
error = toku_logger_close(&logger);
|
||||
assert(error == 0);
|
||||
|
||||
|
|
|
@ -80,8 +80,7 @@ static inline void clean_shutdown(TOKULOGGER *loggerp, CACHETABLE *ctp) {
|
|||
r = toku_checkpoint(cp, *loggerp, NULL, NULL, NULL, NULL, SHUTDOWN_CHECKPOINT);
|
||||
CKERR(r);
|
||||
|
||||
r = toku_logger_close_rollback(*loggerp);
|
||||
CKERR(r);
|
||||
toku_logger_close_rollback(*loggerp);
|
||||
|
||||
r = toku_checkpoint(cp, *loggerp, NULL, NULL, NULL, NULL, SHUTDOWN_CHECKPOINT);
|
||||
CKERR(r);
|
||||
|
@ -95,11 +94,9 @@ static inline void clean_shutdown(TOKULOGGER *loggerp, CACHETABLE *ctp) {
|
|||
}
|
||||
|
||||
static inline void shutdown_after_recovery(TOKULOGGER *loggerp, CACHETABLE *ctp) {
|
||||
int r;
|
||||
r = toku_logger_close_rollback(*loggerp);
|
||||
CKERR(r);
|
||||
toku_logger_close_rollback(*loggerp);
|
||||
toku_cachetable_close(ctp);
|
||||
r = toku_logger_close(loggerp);
|
||||
int r = toku_logger_close(loggerp);
|
||||
CKERR(r);
|
||||
}
|
||||
|
||||
|
|
|
@ -1041,12 +1041,7 @@ env_close(DB_ENV * env, uint32_t flags) {
|
|||
toku_ydb_do_error(env, r, "%s", err_msg);
|
||||
goto panic_and_quit_early;
|
||||
}
|
||||
r = toku_logger_close_rollback(env->i->logger);
|
||||
if (r) {
|
||||
err_msg = "Cannot close environment (error during closing rollback cachefile)\n";
|
||||
toku_ydb_do_error(env, r, "%s", err_msg);
|
||||
goto panic_and_quit_early;
|
||||
}
|
||||
toku_logger_close_rollback(env->i->logger);
|
||||
//Do a second checkpoint now that the rollback cachefile is closed.
|
||||
r = toku_checkpoint(cp, env->i->logger, NULL, NULL, NULL, NULL, SHUTDOWN_CHECKPOINT);
|
||||
if (r) {
|
||||
|
|
Loading…
Add table
Reference in a new issue