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

Reply via email to