From 1ec1ee81e9bec0e8e3b7e93e5ac995edca44e55a Mon Sep 17 00:00:00 2001 From: Tony Chen Date: Mon, 30 Dec 2024 11:32:12 +0800 Subject: [PATCH] fix race condition --- evmrpc/filter.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/evmrpc/filter.go b/evmrpc/filter.go index bb0e62cdf..9473197c3 100644 --- a/evmrpc/filter.go +++ b/evmrpc/filter.go @@ -349,6 +349,8 @@ func (f *LogFetcher) GetLogsByFilters(ctx context.Context, crit filters.FilterCr defer wg.Done() defer func() { if r := recover(); r != nil { + mu.Lock() + defer mu.Unlock() err = fmt.Errorf("unexpected panic caught in GetLogsByFilters worker: %v", r) } }() @@ -387,16 +389,16 @@ func (f *LogFetcher) GetLogsByFilters(ctx context.Context, crit filters.FilterCr close(resultsChan) // Close the results channel after workers finish }() - // Check err after all work is done - if len(errorsList) > 0 { - err = errors.Join(errorsList...) - } - // Aggregate results into the final slice for result := range resultsChan { res = append(res, result) } + // Check err after all work is done + if len(errorsList) > 0 { + err = errors.Join(errorsList...) + } + // Sorting res in ascending order sort.Slice(res, func(i, j int) bool { return res[i].BlockNumber < res[j].BlockNumber