Reduce scope for filter removal failure when getting actor events

Use a fresh context to remove the temporary filter installed solely to
get the actor events. This should reduce chances of failure in a case
where the original context may be expired/cancelled.

Refactor removal into a `defer` statement for a more readable, concise
return statement.
This commit is contained in:
Masih H. Derkani 2024-03-01 16:02:04 +00:00 committed by Phi-rjan
parent b88ae030b2
commit 5b40268366

View File

@ -103,7 +103,6 @@ func (a *ActorEventHandler) GetActorEvents(ctx context.Context, evtFilter *types
}
// Install a filter just for this call, collect events, remove the filter
tipSetCid, err := params.GetTipSetCid()
if err != nil {
return nil, fmt.Errorf("failed to get tipset cid: %w", err)
@ -112,12 +111,13 @@ func (a *ActorEventHandler) GetActorEvents(ctx context.Context, evtFilter *types
if err != nil {
return nil, err
}
evs := getCollected(ctx, f)
if err := a.eventFilterManager.Remove(ctx, f.ID()); err != nil {
log.Warnf("failed to remove filter: %s", err)
}
return evs, nil
defer func() {
// Remove the temporary filter regardless of the original context.
if err := a.eventFilterManager.Remove(context.Background(), f.ID()); err != nil {
log.Warnf("failed to remove filter: %s", err)
}
}()
return getCollected(ctx, f), nil
}
type filterParams struct {