Changeset: 119e0dddedba for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=119e0dddedba Modified Files: gdk/gdk_logger.c gdk/gdk_logger.h monetdb5/modules/kernel/logger.c sql/server/sql_mvc.c sql/storage/bat/bat_logger.c sql/storage/restrict/restrict_logger.c sql/storage/store.c Branch: transaction-replication Log Message:
Pass transaction replication settings to the logger diffs (183 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -1039,7 +1039,7 @@ logger_fatal(const char *format, const c } static logger * -logger_new(int debug, char *fn, char *logdir, int version, preversionfix_fptr prefuncp, postversionfix_fptr postfuncp) +logger_new(int debug, char *fn, logger_settings *log_settings, int version, preversionfix_fptr prefuncp, postversionfix_fptr postfuncp) { int id = LOG_SID; logger *lg = (struct logger *) GDKmalloc(sizeof(struct logger)); @@ -1067,11 +1067,11 @@ logger_new(int debug, char *fn, char *lo /* if the path is absolute, it means someone is still calling * logger_create/logger_new "manually" */ - assert(!MT_path_absolute(logdir)); + assert(!MT_path_absolute(log_settings->logdir)); snprintf(filename, BUFSIZ, "%s%c%s%c%s%c", GDKgetenv("gdk_dbpath"), DIR_SEP, - logdir, DIR_SEP, fn, DIR_SEP); + log_settings->logdir, DIR_SEP, fn, DIR_SEP); if ((lg->fn = GDKstrdup(fn)) == NULL || (lg->dir = GDKstrdup(filename)) == NULL) { fprintf(stderr, "!ERROR: logger_new: strdup failed\n"); @@ -1399,7 +1399,7 @@ logger_new(int debug, char *fn, char *lo snprintf(cvfile, sizeof(cvfile), "%s%c%s%c%s%cconvert-32-64", GDKgetenv("gdk_dbpath"), - DIR_SEP, logdir, DIR_SEP, fn, DIR_SEP); + DIR_SEP, log_settings->logdir, DIR_SEP, fn, DIR_SEP); snprintf(bak, sizeof(bak), "%s_32-64-convert", fn); { FILE *fp1; @@ -1477,9 +1477,9 @@ logger_new(int debug, char *fn, char *lo } logger * -logger_create(int debug, char *fn, char *logdir, int version, preversionfix_fptr prefuncp, postversionfix_fptr postfuncp) +logger_create(int debug, char *fn, logger_settings *log_settings, int version, preversionfix_fptr prefuncp, postversionfix_fptr postfuncp) { - logger *lg = logger_new(debug, fn, logdir, version, prefuncp, postfuncp); + logger *lg = logger_new(debug, fn, log_settings, version, prefuncp, postfuncp); if (!lg) return NULL; diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h --- a/gdk/gdk_logger.h +++ b/gdk/gdk_logger.h @@ -78,6 +78,13 @@ typedef struct logger { commit). */ } logger; +/* holds logger settings*/ +typedef struct logger_settings { + char *logdir; /* server (the regular) write-ahead log directory */ + char *shared_wal_dir; /* shared write-ahead log directory */ + int shared_wal_threshold; /* shared write-ahead log drift threshold */ +} logger_settings; + #define BATSIZE 0 typedef int log_bid; 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 @@ -90,7 +90,13 @@ 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_settings *log_settings = (struct logger_settings *) GDKmalloc(sizeof(struct logger_settings)); + log_settings->logdir = dirname; + /* get and pass on the shared WAL directory location, if set */ + log_settings->shared_wal_dir = GDKgetenv("gdk_shared_wal_dir"); + /* get and pass on the shared WAL drift threshold, if set */ + log_settings->shared_wal_threshold = GDKgetenv("gdk_shared_wal_threshold"); + logger *l = logger_create(*debug, *fn, log_settings, *version, NULL, NULL); if (l) { *(logger**)L = l; diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c --- a/sql/server/sql_mvc.c +++ b/sql/server/sql_mvc.c @@ -29,6 +29,7 @@ #include "sql_semantic.h" #include "sql_privileges.h" #include "rel_select.h" +#include "gdk_logger.h" static int mvc_debug = 0; @@ -36,15 +37,25 @@ int mvc_init(int debug, store_type store, int ro, int su, backend_stack stk) { int first = 0; - char *logdir = "sql_logs"; + + logger_settings *log_settings = (struct logger_settings *) GDKmalloc(sizeof(struct logger_settings)); + log_settings->logdir = "sql_logs"; + /* get and pass on the shared WAL directory location, if set */ + log_settings->shared_wal_dir = GDKgetenv("gdk_shared_wal_dir"); + /* get and pass on the shared WAL drift threshold, if set */ + log_settings->shared_wal_threshold = GDKgetenv("gdk_shared_wal_threshold"); mvc_debug = debug&4; - if (mvc_debug) - fprintf(stderr, "#mvc_init logdir %s\n", logdir); + if (mvc_debug) { + fprintf(stderr, "#mvc_init logdir %s\n", log_settings->logdir); + fprintf(stderr, "#mvc_init shared_wal_dir %s\n", log_settings->shared_wal_dir); + fprintf(stderr, "#mvc_init shared_wal_threshold %s\n", log_settings->shared_wal_threshold); + } keyword_init(); scanner_init_keywords(); - if ((first = store_init(debug, store, ro, su, logdir, stk)) < 0) { + + if ((first = store_init(debug, store, ro, su, log_settings, stk)) < 0) { fprintf(stderr, "!mvc_init: unable to create system tables\n"); return -1; } @@ -1550,4 +1561,3 @@ mvc_copy_idx(mvc *m, sql_table *t, sql_i { return sql_trans_copy_idx(m->session->tr, t, i); } - 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 @@ -275,11 +275,11 @@ bl_postversion( void *lg) } static int -bl_create(int debug, char *logdir, int cat_version) +bl_create(int debug, logger_settings *log_settings, int cat_version) { 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", log_settings, cat_version, bl_preversion, bl_postversion); 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 @@ -23,11 +23,11 @@ logger *restrict_logger = NULL; static int -bl_create(int debug, char *logdir, int catalog_version) +bl_create(int debug, logger_settings *log_settings, int catalog_version) { if (restrict_logger) return LOG_ERR; - restrict_logger = logger_create(debug, "sql", logdir, catalog_version, NULL, NULL); + restrict_logger = logger_create(debug, "sql", log_settings, catalog_version, NULL, NULL); if (restrict_logger) return LOG_OK; return LOG_ERR; diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -1288,7 +1288,7 @@ store_schema_number(void) } int -store_init(int debug, store_type store, int readonly, int singleuser, char *logdir, backend_stack stk) +store_init(int debug, store_type store, int readonly, int singleuser, logger_settings *log_settings, backend_stack stk) { sqlid id = 0; lng lng_store_oid; @@ -1316,7 +1316,7 @@ store_init(int debug, store_type store, } active_store_type = store; if (!logger_funcs.create || - logger_funcs.create(debug, logdir, CATALOG_VERSION*v) == LOG_ERR) { + logger_funcs.create(debug, log_settings, CATALOG_VERSION*v) == LOG_ERR) { MT_lock_unset(&bs_lock, "store_init"); return -1; } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list