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