Changeset: aae94618c924 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aae94618c924
Modified Files:
gdk/gdk_logger.c
gdk/gdk_logger.h
monetdb5/modules/kernel/logger.c
sql/storage/bat/bat_logger.c
sql/storage/restrict/restrict_logger.c
sql/storage/sql_storage.h
sql/storage/store.c
Branch: transaction-replication
Log Message:
Fix an issue with incorrectly cleaned or uncleand up WAL files on startup
- Pass the value for the number of logs to keep
- Fix an off-by-one when cleaning up old logs (logger_cleanup_old)
diffs (107 lines):
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1664,7 +1664,7 @@ logger_reload(logger *lg)
/* Create a new logger */
logger *
-logger_create(int debug, const char *fn, const char *logdir, int version,
preversionfix_fptr prefuncp, postversionfix_fptr postfuncp)
+logger_create(int debug, const char *fn, const char *logdir, int version,
preversionfix_fptr prefuncp, postversionfix_fptr postfuncp, int
keep_persisted_log_files)
{
logger *lg = logger_new(debug, fn, logdir, version, prefuncp,
postfuncp, 0, NULL);
@@ -1677,7 +1677,7 @@ logger_create(int debug, const char *fn,
}
if (lg->changes &&
(logger_restart(lg) != LOG_OK ||
- logger_cleanup(lg, 0) != LOG_OK)) {
+ logger_cleanup(lg, keep_persisted_log_files) != LOG_OK)) {
logger_destroy(lg);
return NULL;
@@ -1814,7 +1814,7 @@ logger_cleanup_old(logger *lg, int keep_
int cleanupResultBak = 0;
// Calculate offset based on the number of files to keep
- id = lg->id - keep_persisted_log_files;
+ id = lg->id - keep_persisted_log_files - 1;
// Stop cleaning up once bak- files are no longer found
while (id > 0 && (cleanupResultLog == LOG_OK || cleanupResultBak ==
LOG_OK)) {
diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h
--- a/gdk/gdk_logger.h
+++ b/gdk/gdk_logger.h
@@ -116,7 +116,7 @@ typedef int log_bid;
/* the sequence identifier for frontend objects */
#define OBJ_SID 1
-gdk_export logger *logger_create(int debug, const char *fn, const char
*logdir, int version, preversionfix_fptr prefuncp, postversionfix_fptr
postfuncp);
+gdk_export logger *logger_create(int debug, const char *fn, const char
*logdir, int version, preversionfix_fptr prefuncp, postversionfix_fptr
postfuncp, int keep_persisted_log_files);
gdk_export logger *logger_create_shared(int debug, const char *fn, const char
*logdir, const char *slave_logdir, int version, preversionfix_fptr prefuncp,
postversionfix_fptr postfuncp);
gdk_export void logger_destroy(logger *lg);
gdk_export int logger_exit(logger *lg);
diff --git a/monetdb5/modules/kernel/logger.c b/monetdb5/modules/kernel/logger.c
--- a/monetdb5/modules/kernel/logger.c
+++ b/monetdb5/modules/kernel/logger.c
@@ -86,7 +86,7 @@ logger_export str logger_create_wrap( lo
str
logger_create_wrap( logger *L, int *debug, str *fn, str *dirname, int *version)
{
- logger *l = logger_create(*debug, *fn, *dirname, *version, NULL, NULL);
+ logger *l = logger_create(*debug, *fn, *dirname, *version, NULL, NULL,
0);
if (l) {
*(logger**)L = l;
diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -200,11 +200,11 @@ bl_postversion( void *lg)
}
static int
-bl_create(int debug, const char *logdir, int cat_version)
+bl_create(int debug, const char *logdir, int cat_version, int
keep_persisted_log_files)
{
if (bat_logger)
return LOG_ERR;
- bat_logger = logger_create(debug, "sql", logdir, cat_version,
bl_preversion, bl_postversion);
+ bat_logger = logger_create(debug, "sql", logdir, cat_version,
bl_preversion, bl_postversion, keep_persisted_log_files);
if (bat_logger)
return LOG_OK;
return LOG_ERR;
diff --git a/sql/storage/restrict/restrict_logger.c
b/sql/storage/restrict/restrict_logger.c
--- a/sql/storage/restrict/restrict_logger.c
+++ b/sql/storage/restrict/restrict_logger.c
@@ -27,7 +27,7 @@ bl_create(int debug, const char *logdir,
{
if (restrict_logger)
return LOG_ERR;
- restrict_logger = logger_create(debug, "sql", logdir, catalog_version,
NULL, NULL);
+ restrict_logger = logger_create(debug, "sql", logdir, catalog_version,
NULL, NULL, 0);
if (restrict_logger)
return LOG_OK;
return LOG_ERR;
diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h
--- a/sql/storage/sql_storage.h
+++ b/sql/storage/sql_storage.h
@@ -247,7 +247,7 @@ typedef struct store_functions {
extern store_functions store_funcs;
-typedef int (*logger_create_fptr) (int debug, const char *logdir, int
catalog_version);
+typedef int (*logger_create_fptr) (int debug, const char *logdir, int
catalog_version, int keep_persisted_log_files);
typedef int (*logger_create_shared_fptr) (int debug, const char *logdir, int
catalog_version, const char *slave_logdir);
typedef void (*logger_destroy_fptr) (void);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1526,7 +1526,7 @@ store_init(int debug, store_type store,
}
active_store_type = store;
if (!logger_funcs.create ||
- logger_funcs.create(debug, log_settings->logdir, CATALOG_VERSION*v)
== LOG_ERR) {
+ logger_funcs.create(debug, log_settings->logdir, CATALOG_VERSION*v,
keep_persisted_log_files) == LOG_ERR) {
MT_lock_unset(&bs_lock, "store_init");
return -1;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list