Changeset: a687c5c46b2a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a687c5c46b2a
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk_logger.c
        gdk/gdk_logger.h
        sql/storage/bat/bat_logger.c
        sql/storage/sql_storage.h
        sql/storage/store.c
Branch: group-commit
Log Message:

Merge log_tflush and log_tdone.


diffs (144 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -545,9 +545,8 @@ gdk_return log_bat_transient(logger *lg,
 gdk_return log_constant(logger *lg, int type, ptr val, log_id id, lng offset, 
lng cnt);
 gdk_return log_delta(logger *lg, BAT *uid, BAT *uval, log_id id);
 gdk_return log_sequence(logger *lg, int seq, lng id);
-gdk_return log_tdone(logger *lg, ulng commit_ts);
 gdk_return log_tend(logger *lg);
-gdk_return log_tflush(logger *lg, ulng log_file_id);
+gdk_return log_tflush(logger *lg, ulng log_file_id, ulng commit_ts);
 gdk_return log_tstart(logger *lg, bool flushnow, ulng *log_file_id);
 gdk_return logger_activate(logger *lg);
 lng logger_changes(logger *lg);
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2794,11 +2794,24 @@ flush_queue_length(logger *lg) {
        return fql;
 }
 
+static gdk_return
+log_tdone(logger *lg, ulng commit_ts)
+{
+       if (lg->debug & 1)
+               fprintf(stderr, "#log_tdone " LLFMT "\n", commit_ts);
+
+       if (lg->current) {
+               lg->current->last_ts = commit_ts;
+       }
+       return GDK_SUCCEED;
+}
+
 gdk_return
-log_tflush(logger* lg, ulng log_file_id) {
+log_tflush(logger* lg, ulng log_file_id, ulng commit_ts) {
 
        if (lg->flushnow) {
                lg->flushnow = 0;
+               log_tdone(lg, commit_ts);
                return logger_commit(lg);
        }
 
@@ -2834,20 +2847,11 @@ log_tflush(logger* lg, ulng log_file_id)
        /* else the log file has already rotated and hence my wal messages are 
already flushed.
         * No need to do anything */
 
+
+       log_tdone(lg, commit_ts);
        (void) ATOMIC_DEC(&lg->refcount);
        MT_lock_unset(&lg->flush_lock);
-       return GDK_SUCCEED;
-}
 
-gdk_return
-log_tdone(logger *lg, ulng commit_ts)
-{
-       if (lg->debug & 1)
-               fprintf(stderr, "#log_tdone " LLFMT "\n", commit_ts);
-
-       if (lg->current) {
-               lg->current->last_ts = commit_ts;
-       }
        return GDK_SUCCEED;
 }
 
diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h
--- a/gdk/gdk_logger.h
+++ b/gdk/gdk_logger.h
@@ -70,8 +70,7 @@ gdk_export gdk_return log_delta(logger *
 
 gdk_export gdk_return log_tstart(logger *lg, bool flushnow, ulng *log_file_id);
 gdk_export gdk_return log_tend(logger *lg);
-gdk_export gdk_return log_tflush(logger *lg, ulng log_file_id); /* Flush the 
WAL to disk using group commit */
-gdk_export gdk_return log_tdone(logger *lg, ulng commit_ts);
+gdk_export gdk_return log_tflush(logger *lg, ulng log_file_id, ulng 
commit_ts); /* Flush the WAL to disk using group commit */
 
 gdk_export gdk_return log_sequence(logger *lg, int seq, lng id);
 gdk_export log_bid logger_find_bat(logger *lg, log_id id);
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
@@ -3150,15 +3150,9 @@ bl_tend(sqlstore *store)
 }
 
 static int
-bl_tflush(sqlstore *store, ulng log_file_id)
+bl_tflush(sqlstore *store, ulng log_file_id, ulng commit_ts)
 {
-       return log_tflush(store->logger, log_file_id) == GDK_SUCCEED ? LOG_OK : 
LOG_ERR;
-}
-
-static int
-bl_tdone(sqlstore *store, ulng commit_ts)
-{
-       return log_tdone(store->logger, commit_ts) == GDK_SUCCEED ? LOG_OK : 
LOG_ERR;
+       return log_tflush(store->logger, log_file_id, commit_ts) == GDK_SUCCEED 
? LOG_OK : LOG_ERR;
 }
 
 static int
@@ -3559,7 +3553,6 @@ bat_logger_init( logger_functions *lf )
        lf->log_tstart = bl_tstart;
        lf->log_tend = bl_tend;
        lf->log_tflush = bl_tflush;
-       lf->log_tdone = bl_tdone;
        lf->log_sequence = bl_sequence;
        lf->get_snapshot_files = bl_snapshot;
 }
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
@@ -279,8 +279,7 @@ typedef int (*logger_get_sequence_fptr) 
 typedef int (*log_isnew_fptr)(struct sqlstore *store);
 typedef int (*log_tstart_fptr) (struct sqlstore *store, bool flush, ulng 
*log_file_id);
 typedef int (*log_tend_fptr) (struct sqlstore *store);
-typedef int (*log_tflush_fptr) (struct sqlstore *store, ulng log_file_id);
-typedef int (*log_tdone_fptr) (struct sqlstore *store, ulng commit_ts);
+typedef int (*log_tflush_fptr) (struct sqlstore *store, ulng log_file_id, ulng 
commit_tis);
 typedef lng (*log_save_id_fptr) (struct sqlstore *store);
 typedef int (*log_sequence_fptr) (struct sqlstore *store, int seq, lng id);
 
@@ -314,7 +313,6 @@ typedef struct logger_functions {
        log_tstart_fptr log_tstart;
        log_tend_fptr log_tend;
        log_tflush_fptr log_tflush;
-       log_tdone_fptr log_tdone;
        log_save_id_fptr log_save_id;
        log_sequence_fptr log_sequence;
 } logger_functions;
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -4021,10 +4021,9 @@ sql_trans_commit(sql_trans *tr)
                        if (!flush)
                                MT_lock_unset(&store->commit); /* release the 
commit log when flushing to disk */
                        if (ok == LOG_OK)
-                               ok = store->logger_api.log_tflush(store, 
log_file_id); /* flush/sync */
+                               ok = store->logger_api.log_tflush(store, 
log_file_id, commit_ts); /* flush/sync */
                        if (!flush)
                                MT_lock_set(&store->commit); /* release the 
commit log when flushing to disk */
-                       ok = store->logger_api.log_tdone(store, commit_ts);
                        if (flush)
                                MT_lock_unset(&store->flush);
                }
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to