From 95ffac5d827b74a3729d20a8662c516dbc98b938 Mon Sep 17 00:00:00 2001 From: Gary Rong Date: Thu, 9 Nov 2023 17:52:32 +0800 Subject: [PATCH] core/rawdb: fsync the data file in freezer after write --- core/rawdb/freezer_batch.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/rawdb/freezer_batch.go b/core/rawdb/freezer_batch.go index 3fedf7d040..84a63a4518 100644 --- a/core/rawdb/freezer_batch.go +++ b/core/rawdb/freezer_batch.go @@ -182,12 +182,15 @@ func (batch *freezerTableBatch) maybeCommit() error { // commit writes the batched items to the backing freezerTable. func (batch *freezerTableBatch) commit() error { - // Write data. The head file is not fsync'd after write to avoid - // expensive overhead. + // Write data. The head file is fsync'd after write to ensure the + // data is truly transferred to disk. _, err := batch.t.head.Write(batch.dataBuffer) if err != nil { return err } + if err := batch.t.head.Sync(); err != nil { + return err + } dataSize := int64(len(batch.dataBuffer)) batch.dataBuffer = batch.dataBuffer[:0]