Use DB_LOG_AUTOREMOVE flag instead of noticecall customization to BDB
so log files are deleted once they are no longer in use. (Bug #14655)
This commit is contained in:
parent
2cb601c840
commit
aecf0238f3
@ -76,8 +76,9 @@ const u_int32_t bdb_DB_RECOVER= DB_RECOVER;
|
||||
const u_int32_t bdb_DB_PRIVATE= DB_PRIVATE;
|
||||
const char *ha_berkeley_ext=".db";
|
||||
bool berkeley_shared_data=0;
|
||||
u_int32_t berkeley_init_flags= DB_PRIVATE | DB_RECOVER, berkeley_env_flags=0,
|
||||
berkeley_lock_type=DB_LOCK_DEFAULT;
|
||||
u_int32_t berkeley_init_flags= DB_PRIVATE | DB_RECOVER,
|
||||
berkeley_env_flags= DB_LOG_AUTOREMOVE,
|
||||
berkeley_lock_type= DB_LOCK_DEFAULT;
|
||||
ulong berkeley_cache_size, berkeley_log_buffer_size, berkeley_log_file_size=0;
|
||||
char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir;
|
||||
long berkeley_lock_scan_time=0;
|
||||
@ -104,7 +105,6 @@ static int free_share(BDB_SHARE *share, TABLE *table, uint hidden_primary_key,
|
||||
bool mutex_is_locked);
|
||||
static int write_status(DB *status_block, char *buff, uint length);
|
||||
static void update_status(BDB_SHARE *share, TABLE *table);
|
||||
static void berkeley_noticecall(DB_ENV *db_env, db_notices notice);
|
||||
|
||||
static int berkeley_close_connection(THD *thd);
|
||||
static int berkeley_commit(THD *thd, bool all);
|
||||
@ -192,7 +192,6 @@ bool berkeley_init(void)
|
||||
goto error;
|
||||
db_env->set_errcall(db_env,berkeley_print_error);
|
||||
db_env->set_errpfx(db_env,"bdb");
|
||||
db_env->set_noticecall(db_env, berkeley_noticecall);
|
||||
db_env->set_tmp_dir(db_env, berkeley_tmpdir);
|
||||
db_env->set_data_dir(db_env, mysql_data_home);
|
||||
db_env->set_flags(db_env, berkeley_env_flags, 1);
|
||||
@ -365,17 +364,6 @@ static void berkeley_print_error(const DB_ENV *db_env, const char *db_errpfx,
|
||||
}
|
||||
|
||||
|
||||
static void berkeley_noticecall(DB_ENV *db_env, db_notices notice)
|
||||
{
|
||||
switch (notice)
|
||||
{
|
||||
case DB_NOTICE_LOGFILE_CHANGED: /* purecov: tested */
|
||||
mysql_manager_submit(berkeley_cleanup_log_files);
|
||||
pthread_cond_signal(&COND_manager);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void berkeley_cleanup_log_files(void)
|
||||
{
|
||||
DBUG_ENTER("berkeley_cleanup_log_files");
|
||||
|
@ -1736,10 +1736,6 @@ struct __db_qam_stat {
|
||||
*******************************************************/
|
||||
#define DB_REGION_MAGIC 0x120897 /* Environment magic number. */
|
||||
|
||||
typedef enum {
|
||||
DB_NOTICE_LOGFILE_CHANGED
|
||||
} db_notices;
|
||||
|
||||
/* Database Environment handle. */
|
||||
struct __db_env {
|
||||
/*******************************************************
|
||||
@ -1757,7 +1753,6 @@ struct __db_env {
|
||||
/* Other Callbacks. */
|
||||
void (*db_feedback) __P((DB_ENV *, int, int));
|
||||
void (*db_paniccall) __P((DB_ENV *, int));
|
||||
void (*db_noticecall) __P((DB_ENV *, db_notices));
|
||||
|
||||
/* App-specified alloc functions. */
|
||||
void *(*db_malloc) __P((size_t));
|
||||
@ -1932,7 +1927,6 @@ struct __db_env {
|
||||
int (*set_feedback) __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
|
||||
int (*get_flags) __P((DB_ENV *, u_int32_t *));
|
||||
int (*set_flags) __P((DB_ENV *, u_int32_t, int));
|
||||
void (*set_noticecall) __P((DB_ENV *, void (*)(DB_ENV *, db_notices)));
|
||||
int (*get_home) __P((DB_ENV *, const char **));
|
||||
int (*set_intermediate_dir) __P((DB_ENV *, int, u_int32_t));
|
||||
int (*get_open_flags) __P((DB_ENV *, u_int32_t *));
|
||||
|
17
storage/bdb/env/env_method.c
vendored
17
storage/bdb/env/env_method.c
vendored
@ -156,7 +156,6 @@ __dbenv_init(dbenv)
|
||||
dbenv->set_feedback = __dbcl_env_set_feedback;
|
||||
dbenv->get_flags = __dbcl_env_get_flags;
|
||||
dbenv->set_flags = __dbcl_env_flags;
|
||||
dbenv->set_noticecall = __dbcl_env_noticecall;
|
||||
dbenv->set_paniccall = __dbcl_env_paniccall;
|
||||
dbenv->set_rpc_server = __dbcl_envrpcserver;
|
||||
dbenv->get_shm_key = __dbcl_get_shm_key;
|
||||
@ -195,7 +194,6 @@ __dbenv_init(dbenv)
|
||||
dbenv->get_flags = __dbenv_get_flags;
|
||||
dbenv->set_flags = __dbenv_set_flags;
|
||||
dbenv->set_intermediate_dir = __dbenv_set_intermediate_dir;
|
||||
dbenv->set_noticecall = __dbenv_set_noticecall;
|
||||
dbenv->set_paniccall = __dbenv_set_paniccall;
|
||||
dbenv->set_rpc_server = __dbenv_set_rpc_server_noclnt;
|
||||
dbenv->get_shm_key = __dbenv_get_shm_key;
|
||||
@ -810,21 +808,6 @@ __dbenv_set_msgfile(dbenv, msgfile)
|
||||
dbenv->db_msgfile = msgfile;
|
||||
}
|
||||
|
||||
/*
|
||||
* __dbenv_set_noticecall --
|
||||
* {DB_ENV,DB}->set_noticecall.
|
||||
*
|
||||
* PUBLIC: int __dbenv_set_noticecall __P((DB_ENV *, void (*)(DB_ENV *, int)));
|
||||
*/
|
||||
int
|
||||
__dbenv_set_noticecall(dbenv, noticecall)
|
||||
DB_ENV *dbenv;
|
||||
void (*noticecall) __P((DB_ENV *, int));
|
||||
{
|
||||
dbenv->db_noticecall = noticecall;
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* __dbenv_set_paniccall --
|
||||
* {DB_ENV,DB}->set_paniccall.
|
||||
|
@ -376,9 +376,6 @@ __log_put_next(dbenv, lsn, dbt, hdr, old_lsnp)
|
||||
* anyway.
|
||||
*/
|
||||
newfile = 1;
|
||||
|
||||
if (dbenv->db_noticecall != NULL)
|
||||
dbenv->db_noticecall(dbenv, DB_NOTICE_LOGFILE_CHANGED);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user