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

Reply via email to