From aecf0238f34406dd087699ee5cd313de1f8cdebe Mon Sep 17 00:00:00 2001 From: "jimw@mysql.com" <> Date: Mon, 7 Nov 2005 16:33:53 -0800 Subject: [PATCH] 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) --- sql/ha_berkeley.cc | 18 +++--------------- storage/bdb/dbinc/db.in | 6 ------ storage/bdb/env/env_method.c | 17 ----------------- storage/bdb/log/log_put.c | 3 --- 4 files changed, 3 insertions(+), 41 deletions(-) diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc index eeca6cb1657..0c28b43dafb 100644 --- a/sql/ha_berkeley.cc +++ b/sql/ha_berkeley.cc @@ -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"); diff --git a/storage/bdb/dbinc/db.in b/storage/bdb/dbinc/db.in index b7913512628..18dca52b96e 100644 --- a/storage/bdb/dbinc/db.in +++ b/storage/bdb/dbinc/db.in @@ -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 *)); diff --git a/storage/bdb/env/env_method.c b/storage/bdb/env/env_method.c index 480ee5398d1..4f865061b82 100644 --- a/storage/bdb/env/env_method.c +++ b/storage/bdb/env/env_method.c @@ -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. diff --git a/storage/bdb/log/log_put.c b/storage/bdb/log/log_put.c index ea5e33905b8..86deffe8641 100644 --- a/storage/bdb/log/log_put.c +++ b/storage/bdb/log/log_put.c @@ -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); } /*