|
|
@ -95,7 +95,7 @@ func NewFilterSystem(backend Backend, config Config) *FilterSystem { |
|
|
|
|
|
|
|
|
|
|
|
type logCacheElem struct { |
|
|
|
type logCacheElem struct { |
|
|
|
logs []*types.Log |
|
|
|
logs []*types.Log |
|
|
|
body atomic.Value |
|
|
|
body atomic.Pointer[types.Body] |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// cachedLogElem loads block logs from the backend and caches the result.
|
|
|
|
// cachedLogElem loads block logs from the backend and caches the result.
|
|
|
@ -133,7 +133,7 @@ func (sys *FilterSystem) cachedLogElem(ctx context.Context, blockHash common.Has |
|
|
|
|
|
|
|
|
|
|
|
func (sys *FilterSystem) cachedGetBody(ctx context.Context, elem *logCacheElem, hash common.Hash, number uint64) (*types.Body, error) { |
|
|
|
func (sys *FilterSystem) cachedGetBody(ctx context.Context, elem *logCacheElem, hash common.Hash, number uint64) (*types.Body, error) { |
|
|
|
if body := elem.body.Load(); body != nil { |
|
|
|
if body := elem.body.Load(); body != nil { |
|
|
|
return body.(*types.Body), nil |
|
|
|
return body, nil |
|
|
|
} |
|
|
|
} |
|
|
|
body, err := sys.backend.GetBody(ctx, hash, rpc.BlockNumber(number)) |
|
|
|
body, err := sys.backend.GetBody(ctx, hash, rpc.BlockNumber(number)) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|