Skip to content

Commit

Permalink
Merge pull request #6007 from filecoin-project/asr/state-list-messages
Browse files Browse the repository at this point in the history
Speed up StateListMessages in some cases
  • Loading branch information
magik6k committed Apr 29, 2021
2 parents 4b04cac + ff48a70 commit a456f39
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions node/impl/full/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -808,8 +808,31 @@ func (a *StateAPI) StateListMessages(ctx context.Context, match *api.MessageMatc

if match.To == address.Undef && match.From == address.Undef {
return nil, xerrors.Errorf("must specify at least To or From in message filter")
} else if match.To != address.Undef {
_, err := a.StateLookupID(ctx, match.To, tsk)

// if the recipient doesn't exist at the start point, we're not gonna find any matches
if xerrors.Is(err, types.ErrActorNotFound) {
return nil, nil
}

if err != nil {
return nil, xerrors.Errorf("looking up match.To: %w", err)
}
} else if match.From != address.Undef {
_, err := a.StateLookupID(ctx, match.From, tsk)

// if the sender doesn't exist at the start point, we're not gonna find any matches
if xerrors.Is(err, types.ErrActorNotFound) {
return nil, nil
}

if err != nil {
return nil, xerrors.Errorf("looking up match.From: %w", err)
}
}

// TODO: This should probably match on both ID and robust address, no?
matchFunc := func(msg *types.Message) bool {
if match.From != address.Undef && match.From != msg.From {
return false
Expand Down

0 comments on commit a456f39

Please sign in to comment.