Changeset: b4f297675ec0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b4f297675ec0
Modified Files:
gdk/gdk_logger.c
Branch: multi-cachelock
Log Message:
Back to the main suspect: e3bf73edad44
diffs (45 lines):
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2789,12 +2789,9 @@ new_logfile(logger *lg)
const lng log_large = (GDKdebug & FORCEMITOMASK)?LOG_MINI:LOG_LARGE;
gdk_return result = GDK_SUCCEED;
- MT_lock_set(&lg->rotation_lock);
const lng p = (lng) getfilepos(getFile(lg->output_log));
- if (p == -1) {
- MT_lock_unset(&lg->rotation_lock);
+ if (p == -1)
return GDK_FAIL;
- }
if (( p > log_large || (lg->end*1024) > log_large )) {
log_lock(lg);
if (ATOMIC_GET(&lg->refcount) == 1) {
@@ -2809,7 +2806,6 @@ new_logfile(logger *lg)
}
log_unlock(lg);
}
- MT_lock_unset(&lg->rotation_lock);
return result;
}
@@ -2916,16 +2912,19 @@ log_tflush(logger* lg, ulng log_file_id,
/* number of transactions in the group commit */
const int fqueue_length = flush_queue_length(lg);
/* flush + fsync */
+ MT_lock_set(&lg->rotation_lock);
if (mnstr_flush(lg->output_log, MNSTR_FLUSH_DATA) ||
(!(GDKdebug & NOSYNCMASK) &&
mnstr_fsync(lg->output_log)) ||
new_logfile(lg) != GDK_SUCCEED) {
/* flush failed */
+ MT_lock_unset(&lg->rotation_lock);
MT_lock_unset(&lg->flush_lock);
(void) ATOMIC_DEC(&lg->refcount);
return GDK_FAIL;
}
else {
/* flush succeeded */
+ MT_lock_unset(&lg->rotation_lock);
left_truncate_flush_queue(lg, fqueue_length);
}
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]