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