Changeset: da600256f54f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/da600256f54f
Modified Files:
        gdk/gdk_logger.c
Branch: default
Log Message:

Thinko in implementation of --process-wal-and-exit.
We need to commit the WAL after it was read and exit after that.


diffs (51 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2277,23 +2277,22 @@ log_load(const char *fn, logger *lg, cha
 
        if (readlogs) {
                ulng log_id = lg->saved_id + 1;
+               bool earlyexit = GDKgetenv_isyes("process-wal-and-exit");
                if (log_readlogs(lg, filename) != GDK_SUCCEED) {
                        goto error;
                }
-               if (GDKgetenv_isyes("process-wal-and-exit")) {
-                       printf("# mserver5 exiting\n");
-                       exit(0);
-               }
-               if (lg->postfuncp && (*lg->postfuncp) (lg->funcdata, lg) != 
GDK_SUCCEED)
-                       goto error;
-               if (needsnew) {
-                       if (GDKmove(0, lg->dir, LOGFILE, NULL, lg->dir, 
LOGFILE, "bak", true) != GDK_SUCCEED) {
-                               TRC_CRITICAL(GDK, "couldn't move log to 
log.bak\n");
-                               return GDK_FAIL;
-                       }
-                       if (log_create_types_file(lg, filename) != GDK_SUCCEED) 
{
-                               TRC_CRITICAL(GDK, "couldn't write new log\n");
-                               return GDK_FAIL;
+               if (!earlyexit) {
+                       if (lg->postfuncp && (*lg->postfuncp) (lg->funcdata, 
lg) != GDK_SUCCEED)
+                               goto error;
+                       if (needsnew) {
+                               if (GDKmove(0, lg->dir, LOGFILE, NULL, lg->dir, 
LOGFILE, "bak", true) != GDK_SUCCEED) {
+                                       TRC_CRITICAL(GDK, "couldn't move log to 
log.bak\n");
+                                       return GDK_FAIL;
+                               }
+                               if (log_create_types_file(lg, filename) != 
GDK_SUCCEED) {
+                                       TRC_CRITICAL(GDK, "couldn't write new 
log\n");
+                                       return GDK_FAIL;
+                               }
                        }
                }
                dbg = ATOMIC_GET(&GDKdebug);
@@ -2304,6 +2303,10 @@ log_load(const char *fn, logger *lg, cha
                ATOMIC_SET(&GDKdebug, dbg);
                for (; log_id <= lg->saved_id; log_id++)
                        (void) log_cleanup(lg, log_id); /* ignore error of 
removing file */
+               if (earlyexit) {
+                       printf("# mserver5 exiting\n");
+                       exit(0);
+               }
                if (needsnew &&
                    GDKunlink(0, lg->dir, LOGFILE, "bak") != GDK_SUCCEED) {
                        TRC_CRITICAL(GDK, "couldn't remove old log.bak file\n");
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to