From 7746c8d60bf169eefd6f4339366a096789c10b82 Mon Sep 17 00:00:00 2001 From: Jakob Herlitz <jakob@dydx.exchange> Date: Tue, 24 Oct 2023 19:24:03 -0700 Subject: [PATCH 1/2] add generic json printer to help format customtypes in protos --- protocol/lib/json.go | 20 ++++++++++++++++++++ protocol/x/clob/keeper/deleveraging.go | 11 +++++------ 2 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 protocol/lib/json.go diff --git a/protocol/lib/json.go b/protocol/lib/json.go new file mode 100644 index 0000000000..cbb6be4709 --- /dev/null +++ b/protocol/lib/json.go @@ -0,0 +1,20 @@ +package lib + +import ( + "encoding/json" + "fmt" +) + +// MaybeGetStructJsonString returns the json representation of a struct, or a formatted string using +// %+v if the json conversion encounters an error. +func MaybeGetJsonString(i interface{}) string { + jsonData, err := json.Marshal(i) + if err != nil { + return fmt.Sprintf("%+v", i) + } + + if jsonData == nil { + return "nil" + } + return string(jsonData) +} diff --git a/protocol/x/clob/keeper/deleveraging.go b/protocol/x/clob/keeper/deleveraging.go index e3248a6e35..28e52b3201 100644 --- a/protocol/x/clob/keeper/deleveraging.go +++ b/protocol/x/clob/keeper/deleveraging.go @@ -9,7 +9,6 @@ import ( errorsmod "cosmossdk.io/errors" gometrics "github.com/armon/go-metrics" - "github.com/cometbft/cometbft/libs/log" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -270,8 +269,8 @@ func (k Keeper) OffsetSubaccountPerpetualPosition( "checkTx", ctx.IsCheckTx(), "perpetualId", perpetualId, "deltaQuantums", deltaQuantums, - "liquidatedSubaccount", log.NewLazySprintf("%+v", liquidatedSubaccount), - "offsettingSubaccount", log.NewLazySprintf("%+v", offsettingSubaccount), + "liquidatedSubaccount", liquidatedSubaccount, + "offsettingSubaccount", offsettingSubaccount, ) numSubaccountsWithNonOverlappingBankruptcyPrices++ } @@ -346,9 +345,9 @@ func (k Keeper) ProcessDeleveraging( offsettingPositionQuantums.CmpAbs(deltaQuantums) == -1 { return errorsmod.Wrapf( types.ErrInvalidPerpetualPositionSizeDelta, - "ProcessDeleveraging: liquidated = (%+v), offsetting = (%+v), perpetual id = (%d), deltaQuantums = (%+v)", - liquidatedSubaccount, - offsettingSubaccount, + "ProcessDeleveraging: liquidated = (%s), offsetting = (%s), perpetual id = (%d), deltaQuantums = (%+v)", + lib.MaybeGetJsonString(liquidatedSubaccount), + lib.MaybeGetJsonString(offsettingSubaccount), perpetualId, deltaQuantums, ) From e221f800b4748a040bb98d18d09370282be5e3e2 Mon Sep 17 00:00:00 2001 From: Jakob Herlitz <jakob@dydx.exchange> Date: Wed, 25 Oct 2023 10:36:23 -0700 Subject: [PATCH 2/2] remove unreachable check for nil jsonData --- protocol/lib/json.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/protocol/lib/json.go b/protocol/lib/json.go index cbb6be4709..3b10722bb3 100644 --- a/protocol/lib/json.go +++ b/protocol/lib/json.go @@ -13,8 +13,5 @@ func MaybeGetJsonString(i interface{}) string { return fmt.Sprintf("%+v", i) } - if jsonData == nil { - return "nil" - } return string(jsonData) }