Skip to content

Commit d474676

Browse files
dustinxieYutong Pei
authored andcommitted
fix panic on api.GetBlockMeta (#2413)
1 parent 2293972 commit d474676

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

api/api.go

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1165,13 +1165,8 @@ func (api *Server) getBlockMetas(start uint64, count uint64) (*iotexapi.GetBlock
11651165
}
11661166
var res []*iotextypes.BlockMeta
11671167
for height := start; height <= tipHeight && count > 0; height++ {
1168-
blockMeta, err := api.getBlockMetasByHeader(height)
1169-
if errors.Cause(err) == db.ErrNotExist {
1170-
blockMeta, err = api.getBlockMetasByBlock(height)
1171-
if err != nil {
1172-
return nil, err
1173-
}
1174-
} else if err != nil {
1168+
blockMeta, err := api.getBlockMetaByHeight(height)
1169+
if err != nil {
11751170
return nil, err
11761171
}
11771172
res = append(res, blockMeta)
@@ -1189,13 +1184,8 @@ func (api *Server) getBlockMeta(blkHash string) (*iotexapi.GetBlockMetasResponse
11891184
if err != nil {
11901185
return nil, status.Error(codes.InvalidArgument, err.Error())
11911186
}
1192-
blockMeta, err := api.getBlockMetaByHeader(hash)
1193-
if errors.Cause(err) == db.ErrNotExist {
1194-
blockMeta, err = api.getBlockMetaByBlock(hash)
1195-
if err != nil {
1196-
return nil, err
1197-
}
1198-
} else if err != nil {
1187+
blockMeta, err := api.getBlockMetaByHash(hash)
1188+
if err != nil {
11991189
return nil, err
12001190
}
12011191
return &iotexapi.GetBlockMetasResponse{
@@ -1204,6 +1194,28 @@ func (api *Server) getBlockMeta(blkHash string) (*iotexapi.GetBlockMetasResponse
12041194
}, nil
12051195
}
12061196

1197+
// getBlockMetaByHeight gets block meta by height
1198+
func (api *Server) getBlockMetaByHeight(height uint64) (*iotextypes.BlockMeta, error) {
1199+
if api.indexer != nil {
1200+
blockMeta, err := api.getBlockMetasByHeader(height)
1201+
if errors.Cause(err) != db.ErrNotExist {
1202+
return blockMeta, err
1203+
}
1204+
}
1205+
return api.getBlockMetasByBlock(height)
1206+
}
1207+
1208+
// getBlockMetaByHash gets block meta by hash
1209+
func (api *Server) getBlockMetaByHash(h hash.Hash256) (*iotextypes.BlockMeta, error) {
1210+
if api.indexer != nil {
1211+
blockMeta, err := api.getBlockMetaByHeader(h)
1212+
if errors.Cause(err) != db.ErrNotExist {
1213+
return blockMeta, err
1214+
}
1215+
}
1216+
return api.getBlockMetaByBlock(h)
1217+
}
1218+
12071219
// putBlockMetaUpgradeByBlock puts numActions and transferAmount for blockmeta by block
12081220
func (api *Server) putBlockMetaUpgradeByBlock(blk *block.Block, blockMeta *iotextypes.BlockMeta) *iotextypes.BlockMeta {
12091221
blockMeta.NumActions = int64(len(blk.Actions))

0 commit comments

Comments
 (0)