From 40425394d750f15c6d79db7d0b2461ca7f2d9372 Mon Sep 17 00:00:00 2001 From: James Mills Date: Mon, 1 Nov 2021 17:54:31 +1000 Subject: [PATCH] Fix a data race in Datafile.ReadAt() --- internal/data/datafile.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/data/datafile.go b/internal/data/datafile.go index 2949ec1..8c419d4 100644 --- a/internal/data/datafile.go +++ b/internal/data/datafile.go @@ -6,9 +6,9 @@ import ( "path/filepath" "sync" - "github.com/pkg/errors" "git.mills.io/prologic/bitcask/internal" "git.mills.io/prologic/bitcask/internal/data/codec" + "github.com/pkg/errors" "golang.org/x/exp/mmap" ) @@ -159,6 +159,9 @@ func (df *datafile) ReadAt(index, size int64) (e internal.Entry, err error) { b := make([]byte, size) + df.RLock() + defer df.RUnlock() + if df.ra != nil { n, err = df.ra.ReadAt(b, index) } else {