eth/protocols/snap, internal/testlog: fix dataraces (#29301)
This commit is contained in:
parent
8f7fbdfedc
commit
04bf1c802f
@ -1873,8 +1873,9 @@ func verifyTrie(scheme string, db ethdb.KeyValueStore, root common.Hash, t *test
|
||||
// TestSyncAccountPerformance tests how efficient the snap algo is at minimizing
|
||||
// state healing
|
||||
func TestSyncAccountPerformance(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
// These tests must not run in parallel: they modify the
|
||||
// global var accountConcurrency
|
||||
// t.Parallel()
|
||||
testSyncAccountPerformance(t, rawdb.HashScheme)
|
||||
testSyncAccountPerformance(t, rawdb.PathScheme)
|
||||
}
|
||||
|
@ -47,9 +47,12 @@ type bufHandler struct {
|
||||
buf []slog.Record
|
||||
attrs []slog.Attr
|
||||
level slog.Level
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
func (h *bufHandler) Handle(_ context.Context, r slog.Record) error {
|
||||
h.mu.Lock()
|
||||
defer h.mu.Unlock()
|
||||
h.buf = append(h.buf, r)
|
||||
return nil
|
||||
}
|
||||
@ -59,12 +62,14 @@ func (h *bufHandler) Enabled(_ context.Context, lvl slog.Level) bool {
|
||||
}
|
||||
|
||||
func (h *bufHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
|
||||
h.mu.Lock()
|
||||
defer h.mu.Unlock()
|
||||
records := make([]slog.Record, len(h.buf))
|
||||
copy(records[:], h.buf[:])
|
||||
return &bufHandler{
|
||||
records,
|
||||
append(h.attrs, attrs...),
|
||||
h.level,
|
||||
buf: records,
|
||||
attrs: append(h.attrs, attrs...),
|
||||
level: h.level,
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,9 +80,9 @@ func (h *bufHandler) WithGroup(_ string) slog.Handler {
|
||||
// Logger returns a logger which logs to the unit test log of t.
|
||||
func Logger(t *testing.T, level slog.Level) log.Logger {
|
||||
handler := bufHandler{
|
||||
[]slog.Record{},
|
||||
[]slog.Attr{},
|
||||
level,
|
||||
buf: []slog.Record{},
|
||||
attrs: []slog.Attr{},
|
||||
level: level,
|
||||
}
|
||||
return &logger{
|
||||
t: t,
|
||||
@ -200,6 +205,8 @@ func (h *bufHandler) terminalFormat(r slog.Record) string {
|
||||
// flush writes all buffered messages and clears the buffer.
|
||||
func (l *logger) flush() {
|
||||
l.t.Helper()
|
||||
l.h.mu.Lock()
|
||||
defer l.h.mu.Unlock()
|
||||
for _, r := range l.h.buf {
|
||||
l.t.Logf("%s", l.h.terminalFormat(r))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user