fix: always check if StateSearchMessage returns nil

It returns nil on "not found".

Fixes the cases not covered in:
https://github.com/filecoin-project/lotus/pull/6787
This commit is contained in:
Steven Allen 2021-07-20 11:28:27 -07:00
parent 591320dd44
commit f9c759fcb2
3 changed files with 11 additions and 0 deletions

View File

@ -446,6 +446,9 @@ var StateExecTraceCmd = &cli.Command{
if err != nil { if err != nil {
return err return err
} }
if lookup == nil {
return fmt.Errorf("failed to find message: %s", mcid)
}
ts, err := capi.ChainGetTipSet(ctx, lookup.TipSet) ts, err := capi.ChainGetTipSet(ctx, lookup.TipSet)
if err != nil { if err != nil {
@ -1491,6 +1494,10 @@ var StateSearchMsgCmd = &cli.Command{
return err return err
} }
if mw == nil {
return fmt.Errorf("failed to find message: %s", msg)
}
m, err := api.ChainGetMessage(ctx, msg) m, err := api.ChainGetMessage(ctx, msg)
if err != nil { if err != nil {
return err return err

View File

@ -337,6 +337,9 @@ func resolveFromChain(ctx context.Context, api v0api.FullNode, mcid cid.Cid, blo
if err != nil { if err != nil {
return nil, nil, nil, fmt.Errorf("failed to locate message: %w", err) return nil, nil, nil, fmt.Errorf("failed to locate message: %w", err)
} }
if msgInfo == nil {
return nil, nil, nil, fmt.Errorf("failed to locate message: not found")
}
log.Printf("located message at tipset %s (height: %d) with exit code: %s", msgInfo.TipSet, msgInfo.Height, msgInfo.Receipt.ExitCode) log.Printf("located message at tipset %s (height: %d) with exit code: %s", msgInfo.TipSet, msgInfo.Height, msgInfo.Receipt.ExitCode)

View File

@ -121,6 +121,7 @@ func (ts *apiSuite) testSearchMsg(t *testing.T) {
searchRes, err := full.StateSearchMsg(ctx, types.EmptyTSK, sm.Cid(), lapi.LookbackNoLimit, true) searchRes, err := full.StateSearchMsg(ctx, types.EmptyTSK, sm.Cid(), lapi.LookbackNoLimit, true)
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, searchRes)
require.Equalf(t, res.TipSet, searchRes.TipSet, "search ts: %s, different from wait ts: %s", searchRes.TipSet, res.TipSet) require.Equalf(t, res.TipSet, searchRes.TipSet, "search ts: %s, different from wait ts: %s", searchRes.TipSet, res.TipSet)
} }