From 0adc932400f94be9c933e2864c240ee5e1ab909d Mon Sep 17 00:00:00 2001 From: Thomas E Lackey Date: Tue, 28 Nov 2023 20:41:28 +0000 Subject: [PATCH] 118: queryRecords should return [] when no matching records exist, not an error (#121) Whenever a key is used which doesn't exist in the DB at all, an error is returned like this: ``` [ { message: `rpc error: code = Unknown desc = store doesn't have key: "\\atypeApplicationRecord"`, path: [ 'queryRecords' ] } ] ``` That doesn't make any sense, as it is not an error to find out that the thing you asked for does not exist. This changes it to return an empty list. Reviewed-on: https://git.vdb.to/cerc-io/laconicd/pulls/121 Reviewed-by: David Boreham Co-authored-by: Thomas E Lackey Co-committed-by: Thomas E Lackey --- x/registry/keeper/keeper.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/x/registry/keeper/keeper.go b/x/registry/keeper/keeper.go index 727bb8c2..ebeaaa93 100644 --- a/x/registry/keeper/keeper.go +++ b/x/registry/keeper/keeper.go @@ -20,6 +20,7 @@ import ( auth "github.com/cosmos/cosmos-sdk/x/auth/keeper" bank "github.com/cosmos/cosmos-sdk/x/bank/keeper" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + "github.com/tendermint/tendermint/libs/log" ) var ( @@ -96,6 +97,11 @@ func NewKeeper(cdc codec.BinaryCodec, accountKeeper auth.AccountKeeper, bankKeep } } +// Logger returns a module-specific logger. +func (k Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", types.ModuleName) +} + // GetRecordIndexKey Generates Bond ID -> Bond index key. func GetRecordIndexKey(id string) []byte { return append(PrefixCIDToRecordIndex, []byte(id)...) @@ -389,7 +395,8 @@ func (k Keeper) GetAttributeMapping(ctx sdk.Context, key []byte) ([]string, erro store := ctx.KVStore(k.storeKey) if !store.Has(key) { - return nil, fmt.Errorf("store doesn't have key: %q", key) + k.Logger(ctx).Debug(fmt.Sprintf("store doesn't have key: %q", key)) + return []string{}, nil } var recordIds []string