From 5ee11ed1ebac330a98e2f83e0ee77c565b73100b Mon Sep 17 00:00:00 2001 From: Jonathan Fung <121899091+jonfung-dydx@users.noreply.github.com> Date: Tue, 23 Jan 2024 14:45:30 -0700 Subject: [PATCH] Migrate more logs to new logging lib, add `lib.UnwrapSDKContext` (#1003) * migrate memclob file logs * more error log migration * migrate all k.Logger() to new logger lib * Introduce lib.UnwrapSDKContext that adds log tags * add the epoch event back, removed accidentally * fix delay message tests * lint --- protocol/lib/context.go | 23 +++++++++ protocol/lib/log/constants.go | 5 ++ protocol/x/assets/types/genesis.go | 4 +- protocol/x/clob/keeper/final_settlement.go | 12 +++-- ...pc_query_block_rate_limit_configuration.go | 5 +- .../x/clob/keeper/grpc_query_clob_pair.go | 6 +-- .../grpc_query_equity_tier_limit_config.go | 4 +- .../grpc_query_liquidations_configuration.go | 5 +- .../keeper/grpc_query_mev_node_to_node.go | 3 +- protocol/x/clob/keeper/mev.go | 5 ++ .../x/clob/keeper/msg_server_cancel_orders.go | 2 +- .../keeper/msg_server_create_clob_pair.go | 4 +- .../x/clob/keeper/msg_server_place_order.go | 2 +- .../keeper/msg_server_proposed_operations.go | 2 +- ...g_server_update_block_rate_limit_config.go | 4 +- .../keeper/msg_server_update_clob_pair.go | 4 +- ..._server_update_equity_tier_limit_config.go | 4 +- .../msg_server_update_liquidations_config.go | 4 +- protocol/x/clob/memclob/memclob.go | 48 +++++++++++------- protocol/x/clob/mev_telemetry/telemetry.go | 49 +++++++++++++------ protocol/x/clob/module.go | 10 ++-- protocol/x/delaymsg/keeper/dispatch.go | 35 ++++++++----- protocol/x/delaymsg/keeper/dispatch_test.go | 15 ------ protocol/x/delaymsg/keeper/grpc_query.go | 8 +-- protocol/x/delaymsg/keeper/msg_server.go | 4 +- protocol/x/delaymsg/module.go | 7 ++- protocol/x/epochs/keeper/epoch_info.go | 31 +++++++----- .../x/epochs/keeper/grpc_query_epoch_info.go | 6 +-- protocol/x/epochs/module.go | 7 ++- .../keeper/grpc_query_liquidity_tiers.go | 4 +- .../x/perpetuals/keeper/grpc_query_params.go | 7 ++- .../perpetuals/keeper/grpc_query_perpetual.go | 6 +-- .../perpetuals/keeper/grpc_query_premiums.go | 9 ++-- .../keeper/msg_server_add_premium_votes.go | 4 +- .../keeper/msg_server_create_perpetual.go | 5 +- .../keeper/msg_server_set_liquidity_tier.go | 4 +- .../keeper/msg_server_update_params.go | 4 +- protocol/x/perpetuals/keeper/perpetual.go | 40 +++++++++------ protocol/x/perpetuals/module.go | 7 ++- protocol/x/prices/keeper/grpc_query_market.go | 10 ++-- .../keeper/msg_server_create_oracle_market.go | 5 +- .../keeper/msg_server_update_market_param.go | 5 +- .../keeper/msg_server_update_market_prices.go | 21 +++++--- protocol/x/prices/keeper/update_price.go | 49 ++++++++++++------- .../keeper/validate_market_price_updates.go | 11 +++-- protocol/x/ratelimit/keeper/keeper.go | 17 ++++--- protocol/x/ratelimit/module.go | 3 +- protocol/x/rewards/keeper/keeper.go | 26 ++++++---- protocol/x/rewards/module.go | 6 ++- protocol/x/vest/keeper/keeper.go | 12 ++--- protocol/x/vest/keeper/msg_server.go | 7 +-- protocol/x/vest/module.go | 7 ++- 52 files changed, 364 insertions(+), 223 deletions(-) diff --git a/protocol/lib/context.go b/protocol/lib/context.go index 4380ea6ce7..c7f5aed1d9 100644 --- a/protocol/lib/context.go +++ b/protocol/lib/context.go @@ -1,8 +1,12 @@ package lib import ( + "context" "fmt" + "github.com/cometbft/cometbft/crypto/tmhash" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" ) type TxHash string @@ -10,3 +14,22 @@ type TxHash string func GetTxHash(tx []byte) TxHash { return TxHash(fmt.Sprintf("%X", tmhash.Sum(tx))) } + +// UnwrapSDKContext is a thin wrapper around cosmos sdk's unwrap function +// that extracts the cosmos context from the standard golang context. +// If moduleName is provided, it appends the persistent log tag with +// the module name to the logger in the context. +func UnwrapSDKContext( + goCtx context.Context, + moduleName string, +) sdk.Context { + ctx := sdk.UnwrapSDKContext(goCtx) + if moduleName != "" { + ctx = log.AddPersistentTagsToLogger( + ctx, + log.Module, + fmt.Sprintf("x/%s", moduleName), + ) + } + return ctx +} diff --git a/protocol/lib/log/constants.go b/protocol/lib/log/constants.go index 06e18a1a49..d2efe0bd41 100644 --- a/protocol/lib/log/constants.go +++ b/protocol/lib/log/constants.go @@ -9,8 +9,10 @@ const ( // Do not have anything generic in here. For example, `Status` is too vague // and can be clarified as `OrderStatus` or `DaemonHealthStatus`. const ( + Address = "address" Module = "module" TxMode = "tx_mode" + Operation = "operation" OperationsQueue = "operations_queue" Callback = "callback" BlockHeight = "block_height" @@ -18,6 +20,8 @@ const ( ProposerConsAddress = "proposer_cons_address" Handler = "handler" Tx = "tx" + Order = "order" + OrderId = "order_id" OrderHash = "order_hash" OrderStatus = "order_status" Subaccount = "subaccount" @@ -26,6 +30,7 @@ const ( StackTrace = "stack_trace" Proposer = "proposer" PrunableBlockHeight = "prunable_block_height" + StatusCode = "status_code" OrderSizeOptimisticallyFilledFromMatchingQuantums = "order_size_optimistically_filled_from_matching_quantums" NewLocalValidatorOperationsQueue = "new_local_validator_operations_queue" diff --git a/protocol/x/assets/types/genesis.go b/protocol/x/assets/types/genesis.go index 925ff5b322..3d5fb97248 100644 --- a/protocol/x/assets/types/genesis.go +++ b/protocol/x/assets/types/genesis.go @@ -1,8 +1,6 @@ package types -import ( - "github.com/dydxprotocol/v4-chain/protocol/lib" -) +import "github.com/dydxprotocol/v4-chain/protocol/lib" const ( // UusdcDenom is the precomputed denom for IBC Micro USDC. diff --git a/protocol/x/clob/keeper/final_settlement.go b/protocol/x/clob/keeper/final_settlement.go index 4e1468ff73..dd0a4420e7 100644 --- a/protocol/x/clob/keeper/final_settlement.go +++ b/protocol/x/clob/keeper/final_settlement.go @@ -5,6 +5,7 @@ import ( indexerevents "github.com/dydxprotocol/v4-chain/protocol/indexer/events" "github.com/dydxprotocol/v4-chain/protocol/indexer/indexer_manager" indexershared "github.com/dydxprotocol/v4-chain/protocol/indexer/shared" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" ) @@ -29,11 +30,14 @@ func (k Keeper) mustCancelStatefulOrdersForFinalSettlement(ctx sdk.Context, clob // rather than halt the chain. removeStatefulOrderWithoutPanicing := func(ctx sdk.Context, orderId types.OrderId) { defer func() { - if r := recover(); r != nil { - k.Logger(ctx).Error( - "mustCancelStatefulOrdersForFinalSettlement: Failed to remove stateful order with OrderId %+v: %v", + if err := recover(); err != nil { + log.ErrorLog( + ctx, + "mustCancelStatefulOrdersForFinalSettlement: Failed to remove stateful order", + "orderId", orderId, - r, + "error", + err, ) } }() diff --git a/protocol/x/clob/keeper/grpc_query_block_rate_limit_configuration.go b/protocol/x/clob/keeper/grpc_query_block_rate_limit_configuration.go index 05dd115f0e..ea500abc54 100644 --- a/protocol/x/clob/keeper/grpc_query_block_rate_limit_configuration.go +++ b/protocol/x/clob/keeper/grpc_query_block_rate_limit_configuration.go @@ -2,7 +2,8 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -16,7 +17,7 @@ func (k Keeper) BlockRateLimitConfiguration( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) blockRateLimitConfig := k.GetBlockRateLimitConfiguration(ctx) return &types.QueryBlockRateLimitConfigurationResponse{ diff --git a/protocol/x/clob/keeper/grpc_query_clob_pair.go b/protocol/x/clob/keeper/grpc_query_clob_pair.go index 2f1ba4276b..f1597111aa 100644 --- a/protocol/x/clob/keeper/grpc_query_clob_pair.go +++ b/protocol/x/clob/keeper/grpc_query_clob_pair.go @@ -4,8 +4,8 @@ import ( "context" "cosmossdk.io/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -20,7 +20,7 @@ func (k Keeper) ClobPairAll( } var clobPairs []types.ClobPair - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) store := ctx.KVStore(k.storeKey) clobPairStore := prefix.NewStore(store, []byte(types.ClobPairKeyPrefix)) @@ -46,7 +46,7 @@ func (k Keeper) ClobPair(c context.Context, req *types.QueryGetClobPairRequest) if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) val, found := k.GetClobPair( ctx, diff --git a/protocol/x/clob/keeper/grpc_query_equity_tier_limit_config.go b/protocol/x/clob/keeper/grpc_query_equity_tier_limit_config.go index ea5482c50b..7b810dea90 100644 --- a/protocol/x/clob/keeper/grpc_query_equity_tier_limit_config.go +++ b/protocol/x/clob/keeper/grpc_query_equity_tier_limit_config.go @@ -5,7 +5,7 @@ import ( "google.golang.org/grpc/status" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" "google.golang.org/grpc/codes" ) @@ -17,7 +17,7 @@ func (k Keeper) EquityTierLimitConfiguration( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) return &types.QueryEquityTierLimitConfigurationResponse{ EquityTierLimitConfig: k.GetEquityTierLimitConfiguration(ctx), diff --git a/protocol/x/clob/keeper/grpc_query_liquidations_configuration.go b/protocol/x/clob/keeper/grpc_query_liquidations_configuration.go index a08e7faf5f..2f80445d05 100644 --- a/protocol/x/clob/keeper/grpc_query_liquidations_configuration.go +++ b/protocol/x/clob/keeper/grpc_query_liquidations_configuration.go @@ -2,7 +2,8 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -17,7 +18,7 @@ func (k Keeper) LiquidationsConfiguration( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) liquidationsConfig := k.GetLiquidationsConfig(ctx) return &types.QueryLiquidationsConfigurationResponse{ LiquidationsConfig: liquidationsConfig, diff --git a/protocol/x/clob/keeper/grpc_query_mev_node_to_node.go b/protocol/x/clob/keeper/grpc_query_mev_node_to_node.go index b21f36dce7..9920adc915 100644 --- a/protocol/x/clob/keeper/grpc_query_mev_node_to_node.go +++ b/protocol/x/clob/keeper/grpc_query_mev_node_to_node.go @@ -5,6 +5,7 @@ import ( "math/big" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" "google.golang.org/grpc/codes" @@ -18,7 +19,7 @@ func (k Keeper) MevNodeToNodeCalculation( *types.MevNodeToNodeCalculationResponse, error, ) { - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) // Validate that the request is valid. if err := validateMevNodeToNodeRequest(req); err != nil { diff --git a/protocol/x/clob/keeper/mev.go b/protocol/x/clob/keeper/mev.go index 1f5e29a681..d9987425c5 100644 --- a/protocol/x/clob/keeper/mev.go +++ b/protocol/x/clob/keeper/mev.go @@ -68,6 +68,11 @@ func (k Keeper) RecordMevMetrics( perpetualKeeper process.ProcessPerpetualKeeper, msgProposedOperations *types.MsgProposedOperations, ) { + ctx = log.AddPersistentTagsToLogger( + ctx, + log.Module, + "x/clob/mev_telemetry", + ) defer metrics.ModuleMeasureSince( types.ModuleName, metrics.MevLatency, diff --git a/protocol/x/clob/keeper/msg_server_cancel_orders.go b/protocol/x/clob/keeper/msg_server_cancel_orders.go index 63c9482536..343e38894b 100644 --- a/protocol/x/clob/keeper/msg_server_cancel_orders.go +++ b/protocol/x/clob/keeper/msg_server_cancel_orders.go @@ -22,7 +22,7 @@ func (k msgServer) CancelOrder( goCtx context.Context, msg *types.MsgCancelOrder, ) (resp *types.MsgCancelOrderResponse, err error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) // Attach various logging tags relative to this request. These should be static with no changes. ctx = log.AddPersistentTagsToLogger(ctx, diff --git a/protocol/x/clob/keeper/msg_server_create_clob_pair.go b/protocol/x/clob/keeper/msg_server_create_clob_pair.go index 7f4371304f..4350c8bc73 100644 --- a/protocol/x/clob/keeper/msg_server_create_clob_pair.go +++ b/protocol/x/clob/keeper/msg_server_create_clob_pair.go @@ -5,8 +5,8 @@ import ( errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types" ) @@ -16,7 +16,7 @@ func (k msgServer) CreateClobPair( goCtx context.Context, msg *types.MsgCreateClobPair, ) (resp *types.MsgCreateClobPairResponse, err error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if !k.Keeper.HasAuthority(msg.Authority) { return nil, errorsmod.Wrapf( diff --git a/protocol/x/clob/keeper/msg_server_place_order.go b/protocol/x/clob/keeper/msg_server_place_order.go index f56305ba2e..68251063dc 100644 --- a/protocol/x/clob/keeper/msg_server_place_order.go +++ b/protocol/x/clob/keeper/msg_server_place_order.go @@ -23,7 +23,7 @@ func (k msgServer) PlaceOrder(goCtx context.Context, msg *types.MsgPlaceOrder) ( resp *types.MsgPlaceOrderResponse, err error, ) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) // Attach various logging tags relative to this request. These should be static with no changes. ctx = log.AddPersistentTagsToLogger(ctx, diff --git a/protocol/x/clob/keeper/msg_server_proposed_operations.go b/protocol/x/clob/keeper/msg_server_proposed_operations.go index 6770ddd9e9..3eae985bb9 100644 --- a/protocol/x/clob/keeper/msg_server_proposed_operations.go +++ b/protocol/x/clob/keeper/msg_server_proposed_operations.go @@ -14,7 +14,7 @@ func (k msgServer) ProposedOperations( goCtx context.Context, msg *types.MsgProposedOperations, ) (resp *types.MsgProposedOperationsResponse, err error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) // Attach various logging tags relative to this request. These should be static with no changes. ctx = log.AddPersistentTagsToLogger(ctx, diff --git a/protocol/x/clob/keeper/msg_server_update_block_rate_limit_config.go b/protocol/x/clob/keeper/msg_server_update_block_rate_limit_config.go index 2562e581cf..55708ccefc 100644 --- a/protocol/x/clob/keeper/msg_server_update_block_rate_limit_config.go +++ b/protocol/x/clob/keeper/msg_server_update_block_rate_limit_config.go @@ -4,8 +4,8 @@ import ( "context" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" ) @@ -15,7 +15,7 @@ func (k msgServer) UpdateBlockRateLimitConfiguration( goCtx context.Context, msg *types.MsgUpdateBlockRateLimitConfiguration, ) (resp *types.MsgUpdateBlockRateLimitConfigurationResponse, err error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if !k.Keeper.HasAuthority(msg.Authority) { return nil, errorsmod.Wrapf( diff --git a/protocol/x/clob/keeper/msg_server_update_clob_pair.go b/protocol/x/clob/keeper/msg_server_update_clob_pair.go index e7fb32b2b6..6da258f1ee 100644 --- a/protocol/x/clob/keeper/msg_server_update_clob_pair.go +++ b/protocol/x/clob/keeper/msg_server_update_clob_pair.go @@ -5,8 +5,8 @@ import ( errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" ) @@ -14,7 +14,7 @@ func (k msgServer) UpdateClobPair( goCtx context.Context, msg *types.MsgUpdateClobPair, ) (resp *types.MsgUpdateClobPairResponse, err error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if !k.Keeper.HasAuthority(msg.Authority) { return nil, errorsmod.Wrapf( diff --git a/protocol/x/clob/keeper/msg_server_update_equity_tier_limit_config.go b/protocol/x/clob/keeper/msg_server_update_equity_tier_limit_config.go index 2fabdf781a..af3c60cdbd 100644 --- a/protocol/x/clob/keeper/msg_server_update_equity_tier_limit_config.go +++ b/protocol/x/clob/keeper/msg_server_update_equity_tier_limit_config.go @@ -4,8 +4,8 @@ import ( "context" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" ) @@ -15,7 +15,7 @@ func (k msgServer) UpdateEquityTierLimitConfiguration( goCtx context.Context, msg *types.MsgUpdateEquityTierLimitConfiguration, ) (resp *types.MsgUpdateEquityTierLimitConfigurationResponse, err error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if !k.Keeper.HasAuthority(msg.Authority) { return nil, errorsmod.Wrapf( diff --git a/protocol/x/clob/keeper/msg_server_update_liquidations_config.go b/protocol/x/clob/keeper/msg_server_update_liquidations_config.go index 9a9fb49d93..0cdf0dd872 100644 --- a/protocol/x/clob/keeper/msg_server_update_liquidations_config.go +++ b/protocol/x/clob/keeper/msg_server_update_liquidations_config.go @@ -5,8 +5,8 @@ import ( errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" ) @@ -15,7 +15,7 @@ func (k msgServer) UpdateLiquidationsConfig( goCtx context.Context, msg *types.MsgUpdateLiquidationsConfig, ) (resp *types.MsgUpdateLiquidationsConfigResponse, err error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if !k.Keeper.HasAuthority(msg.Authority) { return nil, errorsmod.Wrapf( diff --git a/protocol/x/clob/memclob/memclob.go b/protocol/x/clob/memclob/memclob.go index c1b26d794a..2336b1c1b1 100644 --- a/protocol/x/clob/memclob/memclob.go +++ b/protocol/x/clob/memclob/memclob.go @@ -16,6 +16,7 @@ import ( "github.com/dydxprotocol/v4-chain/protocol/indexer/off_chain_updates" indexershared "github.com/dydxprotocol/v4-chain/protocol/indexer/shared" "github.com/dydxprotocol/v4-chain/protocol/lib" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" perptypes "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" @@ -887,7 +888,14 @@ func (m *MemClobPriceTimePriority) ReplayOperations( defer func() { if r := recover(); r != nil { stackTrace := string(debug.Stack()) - m.clobKeeper.Logger(ctx).Error("panic in replay operations", "panic", r, "stackTrace", stackTrace) + log.ErrorLog( + ctx, + "panic in replay operations", + log.StackTrace, + stackTrace, + log.Error, + r, + ) } }() @@ -925,7 +933,8 @@ func (m *MemClobPriceTimePriority) ReplayOperations( msg, ) - m.clobKeeper.Logger(ctx).Debug( + log.DebugLog( + ctx, "Received new order", "orderHash", cmtlog.NewLazySprintf("%X", order.GetOrderHash()), @@ -971,7 +980,8 @@ func (m *MemClobPriceTimePriority) ReplayOperations( // and Order Removals (which, when replayed, can result in placements) should never precede a Preexisting // Stateful Order operation. if _, found := placedPreexistingStatefulOrderIds[*orderId]; found { - m.clobKeeper.Logger(ctx).Error( + log.ErrorLog( + ctx, "ReplayOperations: PreexistingStatefulOrder operation for order which was already placed", metrics.OrderId, *orderId, metrics.BlockHeight, ctx.BlockHeight()+1, @@ -979,7 +989,8 @@ func (m *MemClobPriceTimePriority) ReplayOperations( continue } if _, found := placedOrderRemovalOrderIds[*orderId]; found { - m.clobKeeper.Logger(ctx).Error( + log.ErrorLog( + ctx, "ReplayOperations: PreexistingStatefulOrder preceded by Order Removal", metrics.OrderId, *orderId, metrics.BlockHeight, ctx.BlockHeight()+1, @@ -1021,7 +1032,8 @@ func (m *MemClobPriceTimePriority) ReplayOperations( // Log an error if there are two Order Removals for the same OrderId if _, found := placedOrderRemovalOrderIds[orderId]; found { - m.clobKeeper.Logger(ctx).Error( + log.ErrorLog( + ctx, "ReplayOperations: OrderRemoval operation for order which was already removed", metrics.OrderId, orderId, metrics.BlockHeight, ctx.BlockHeight()+1, @@ -1087,14 +1099,13 @@ func (m *MemClobPriceTimePriority) GenerateOffchainUpdatesForReplayPlaceOrder( case *types.InternalOperation_OrderRemoval: loggerString = "ReplayOperations: PlaceOrder() returned an error for a removed stateful order which was re-placed." } - m.clobKeeper.Logger(ctx).Debug( + + log.DebugLog( + ctx, loggerString, - "error", - err, - "operation", - operation, - "order", - order, + log.Error, err, + log.Operation, operation, + log.Order, order, ) // If the order is dropped while adding it to the book, return an off-chain order remove @@ -1721,12 +1732,11 @@ func (m *MemClobPriceTimePriority) mustPerformTakerOrderMatching( } // Panic since this is an unknown error. - m.clobKeeper.Logger(ctx).Error( + log.ErrorLogWithError( + ctx, "Unexpected error from `ProcessSingleMatch`", - "error", err, - "matchWithOrders", - matchWithOrders, + "matchWithOrders", matchWithOrders, ) panic(err) } @@ -2026,10 +2036,10 @@ func (m *MemClobPriceTimePriority) RemoveOrderIfFilled( // stored past expiration, so the fill amount should exist in state immediately after being filled. if !exists { if orderId.IsShortTermOrder() { - m.clobKeeper.Logger(ctx).Error( + log.ErrorLog( + ctx, "RemoveOrderIfFilled: filled Short-Term order ID has no fill amount", - "orderId", - orderId, + log.OrderId, orderId, ) } return diff --git a/protocol/x/clob/mev_telemetry/telemetry.go b/protocol/x/clob/mev_telemetry/telemetry.go index 5c9b700360..a2ba0dc7e8 100644 --- a/protocol/x/clob/mev_telemetry/telemetry.go +++ b/protocol/x/clob/mev_telemetry/telemetry.go @@ -8,9 +8,9 @@ import ( "runtime/debug" "time" - "cosmossdk.io/log" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" ) @@ -19,22 +19,17 @@ var client = &http.Client{ Timeout: 30 * time.Second, } -func logger(ctx sdk.Context) log.Logger { - return ctx.Logger().With(log.ModuleKey, "x/clob/mev_telemetry") -} - // SendDatapoints sends MEV metrics to an HTTP-based metric collection service func SendDatapoints(ctx sdk.Context, addresses []string, mevMetrics types.MevMetrics) { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), metrics.MevSentDatapoints, metrics.Latency) defer func() { if r := recover(); r != nil { - logger(ctx).Error( + log.ErrorLog( + ctx, "panic when recording mev metrics", - "panic", - r, - "stack trace", - string(debug.Stack()), + "error", r, + log.StackTrace, string(debug.Stack()), ) } }() @@ -47,14 +42,23 @@ func SendDatapoints(ctx sdk.Context, addresses []string, mevMetrics types.MevMet func sendDatapointsToTelemetryService(ctx sdk.Context, address string, mevMetrics types.MevMetrics) { data, err := json.Marshal(mevMetrics) if err != nil { - logger(ctx).Error("error marshalling mev metrics", "error", err) + log.ErrorLogWithError( + ctx, + "error marshalling mev metrics", + err, + ) telemetry.IncrCounter(1, types.ModuleName, metrics.MevSentDatapoints, metrics.Error, metrics.Count) return } resp, err := client.Post(address, "application/json", bytes.NewBuffer(data)) if err != nil { - logger(ctx).Error("error sending mev metric", "address", address, "error", err) + log.ErrorLogWithError( + ctx, + "error sending mev metric", + err, + log.Address, address, + ) telemetry.IncrCounter(1, types.ModuleName, metrics.MevSentDatapoints, metrics.Error, metrics.Count) return } @@ -63,20 +67,33 @@ func sendDatapointsToTelemetryService(ctx sdk.Context, address string, mevMetric responseBody, err := io.ReadAll(resp.Body) if err != nil { - logger(ctx).Error("error reading response", "address", address, "error", err) + log.ErrorLogWithError( + ctx, + "error reading response", + err, + log.Address, address, + ) telemetry.IncrCounter(1, types.ModuleName, metrics.MevSentDatapoints, metrics.Error, metrics.Count) return } if len(responseBody) == 0 { - logger(ctx).Error("0-byte response from mev telemetry server", "address", address) + log.ErrorLog( + ctx, + "0-byte response from mev telemetry server", + log.Address, address, + ) telemetry.IncrCounter(1, types.ModuleName, metrics.MevSentDatapoints, metrics.Error, metrics.Count) return } if resp.StatusCode != http.StatusOK { - logger(ctx).Error("error sending mev datapoint", "address", address, - "error", "non-200 http status-code", "status_code", resp.StatusCode) + log.ErrorLog( + ctx, + "error sending mev datapoint, non 200 http status code", + log.Address, address, + log.StatusCode, resp.StatusCode, + ) telemetry.IncrCounter(1, types.ModuleName, metrics.MevSentDatapoints, metrics.Error, metrics.Count) return } diff --git a/protocol/x/clob/module.go b/protocol/x/clob/module.go index 176182e8ea..e817440275 100644 --- a/protocol/x/clob/module.go +++ b/protocol/x/clob/module.go @@ -2,11 +2,12 @@ package clob import ( "context" - "cosmossdk.io/core/appmodule" "encoding/json" "fmt" "time" + "cosmossdk.io/core/appmodule" + "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -18,6 +19,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/clob/client/cli" "github.com/dydxprotocol/v4-chain/protocol/x/clob/keeper" "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" @@ -166,7 +168,7 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } func (am AppModule) BeginBlock(ctx context.Context) error { defer telemetry.ModuleMeasureSince(am.Name(), time.Now(), telemetry.MetricKeyBeginBlocker) BeginBlocker( - sdk.UnwrapSDKContext(ctx), + lib.UnwrapSDKContext(ctx, types.ModuleName), am.keeper, ) return nil @@ -177,7 +179,7 @@ func (am AppModule) BeginBlock(ctx context.Context) error { func (am AppModule) EndBlock(ctx context.Context) error { defer telemetry.ModuleMeasureSince(am.Name(), time.Now(), telemetry.MetricKeyEndBlocker) EndBlocker( - sdk.UnwrapSDKContext(ctx), + lib.UnwrapSDKContext(ctx, types.ModuleName), *am.keeper, ) return nil @@ -187,7 +189,7 @@ func (am AppModule) EndBlock(ctx context.Context) error { func (am AppModule) PrepareCheckState(ctx context.Context) error { defer telemetry.ModuleMeasureSince(am.Name(), time.Now(), telemetry.MetricKeyPrepareCheckStater) PrepareCheckState( - sdk.UnwrapSDKContext(ctx), + lib.UnwrapSDKContext(ctx, types.ModuleName), am.keeper, ) return nil diff --git a/protocol/x/delaymsg/keeper/dispatch.go b/protocol/x/delaymsg/keeper/dispatch.go index 9385df1092..930aedafa3 100644 --- a/protocol/x/delaymsg/keeper/dispatch.go +++ b/protocol/x/delaymsg/keeper/dispatch.go @@ -2,9 +2,9 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/client/constants" "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/lib/abci" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/x/delaymsg/types" ) @@ -30,13 +30,22 @@ func DispatchMessagesForBlock(k types.DelayMsgKeeper, ctx sdk.Context) { for _, id := range blockMessageIds.Ids { delayedMsg, found := k.GetMessage(ctx, id) if !found { - k.Logger(ctx).Error("delayed message not found", types.IdLogKey, id) + log.ErrorLog( + ctx, + "delayed message not found", + types.IdLogKey, id, + ) continue } msg, err := delayedMsg.GetMessage() if err != nil { - k.Logger(ctx).Error("failed to decode delayed message", types.IdLogKey, id, constants.ErrorLogKey, err) + log.ErrorLogWithError( + ctx, + "failed to decode delayed message", + err, + types.IdLogKey, id, + ) continue } @@ -51,16 +60,13 @@ func DispatchMessagesForBlock(k types.DelayMsgKeeper, ctx sdk.Context) { events = append(events, res.GetEvents()...) return nil }); err != nil { - k.Logger(ctx).Error( + log.ErrorLogWithError( + ctx, "failed to execute delayed message", - types.IdLogKey, - id, - constants.ErrorLogKey, err, - types.MessageContentLogKey, - msg.String(), - types.MessageTypeUrlLogKey, - delayedMsg.Msg.TypeUrl, + types.IdLogKey, id, + types.MessageContentLogKey, msg.String(), + types.MessageTypeUrlLogKey, delayedMsg.Msg.TypeUrl, ) } } @@ -71,7 +77,12 @@ func DispatchMessagesForBlock(k types.DelayMsgKeeper, ctx sdk.Context) { // Delete executed messages. for _, id := range blockMessageIds.Ids { if err := k.DeleteMessage(ctx, id); err != nil { - k.Logger(ctx).Error("failed to delete delayed message", types.IdLogKey, id, constants.ErrorLogKey, err) + log.ErrorLogWithError( + ctx, + "failed to delete delayed message", + err, + types.IdLogKey, id, + ) } } } diff --git a/protocol/x/delaymsg/keeper/dispatch_test.go b/protocol/x/delaymsg/keeper/dispatch_test.go index 0f4e89ed41..a9e8308c09 100644 --- a/protocol/x/delaymsg/keeper/dispatch_test.go +++ b/protocol/x/delaymsg/keeper/dispatch_test.go @@ -128,9 +128,6 @@ func setupMockKeeperMessageNotFound(t *testing.T, ctx sdk.Context, k *mocks.Dela msgRouter := mockSuccessRouter(ctx) k.On("Router").Return(msgRouter).Times(2) - // For error logging. - k.On("Logger", ctx).Return(log.NewNopLogger()).Times(1) - // 2 message executions are persisted. cms := ctx.MultiStore().CacheMultiStore().(*mocks.CacheMultiStore) cms.On("Write").Return(nil).Times(2) @@ -169,9 +166,6 @@ func setupMockKeeperExecutionFailure(t *testing.T, ctx sdk.Context, k *mocks.Del k.On("Router").Return(failureRouter).Times(1) k.On("Router").Return(successRouter).Times(2) - // For error logging. - k.On("Logger", ctx).Return(log.NewNopLogger()).Times(1) - // 2 message executions are persisted. cms := ctx.MultiStore().CacheMultiStore().(*mocks.CacheMultiStore) cms.On("Write").Return(nil).Times(2) @@ -210,9 +204,6 @@ func setupMockKeeperMessageHandlerPanic(t *testing.T, ctx sdk.Context, k *mocks. k.On("Router").Return(panicRouter).Times(1) k.On("Router").Return(successRouter).Times(2) - // For error logging. - k.On("Logger", ctx).Return(log.NewNopLogger()).Times(1) - // 2 message executions are persisted. cms := ctx.MultiStore().CacheMultiStore().(*mocks.CacheMultiStore) cms.On("Write").Return(nil).Times(2) @@ -255,9 +246,6 @@ func setupMockKeeperDecodeFailure(t *testing.T, ctx sdk.Context, k *mocks.DelayM cms := ctx.MultiStore().CacheMultiStore().(*mocks.CacheMultiStore) cms.On("Write").Return(nil).Times(2) - // For error logging. - k.On("Logger", ctx).Return(log.NewNopLogger()).Times(1) - // All deletes are called. 2nd delete fails. k.On("DeleteMessage", ctx, uint32(0)).Return(nil).Once() k.On("DeleteMessage", ctx, uint32(1)).Return(nil).Once() @@ -293,9 +281,6 @@ func setupMockKeeperDeletionFailure(t *testing.T, ctx sdk.Context, k *mocks.Dela cms := ctx.MultiStore().CacheMultiStore().(*mocks.CacheMultiStore) cms.On("Write").Return(nil).Times(3) - // For error logging. - k.On("Logger", ctx).Return(log.NewNopLogger()).Times(1) - // All deletes are called. 2nd delete fails. k.On("DeleteMessage", ctx, uint32(0)).Return(nil).Once() k.On("DeleteMessage", ctx, uint32(1)).Return(fmt.Errorf("Deletion failure")).Once() diff --git a/protocol/x/delaymsg/keeper/grpc_query.go b/protocol/x/delaymsg/keeper/grpc_query.go index db9a344a21..68f3775661 100644 --- a/protocol/x/delaymsg/keeper/grpc_query.go +++ b/protocol/x/delaymsg/keeper/grpc_query.go @@ -3,9 +3,9 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" "google.golang.org/grpc/codes" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/delaymsg/types" "google.golang.org/grpc/status" ) @@ -23,7 +23,7 @@ func (k Keeper) NextDelayedMessageId( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) nextDelayedMessageId := k.GetNextDelayedMessageId(ctx) @@ -43,7 +43,7 @@ func (k Keeper) Message( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) delayedMessage, found := k.GetMessage(ctx, req.Id) if !found { @@ -67,7 +67,7 @@ func (k Keeper) BlockMessageIds( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) blockMessageIds, found := k.GetBlockMessageIds(ctx, req.BlockHeight) if !found { diff --git a/protocol/x/delaymsg/keeper/msg_server.go b/protocol/x/delaymsg/keeper/msg_server.go index 9f07314d4e..4b7e57bfb5 100644 --- a/protocol/x/delaymsg/keeper/msg_server.go +++ b/protocol/x/delaymsg/keeper/msg_server.go @@ -5,8 +5,8 @@ import ( "fmt" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/delaymsg/types" ) @@ -23,7 +23,7 @@ func (k msgServer) DelayMessage( goCtx context.Context, msg *types.MsgDelayMessage, ) (*types.MsgDelayMessageResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) // x/delaymsg accepts messages that may have been created by other modules. In this case, the // ValidateBasic method of the message will not have been called. We call it here to ensure // that the message is valid before continuing. diff --git a/protocol/x/delaymsg/module.go b/protocol/x/delaymsg/module.go index be64e28daa..1d113353d2 100644 --- a/protocol/x/delaymsg/module.go +++ b/protocol/x/delaymsg/module.go @@ -2,10 +2,11 @@ package delaymsg import ( "context" - "cosmossdk.io/core/appmodule" "encoding/json" "fmt" + "cosmossdk.io/core/appmodule" + "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -14,6 +15,7 @@ import ( cdctypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/delaymsg/client/cli" "github.com/dydxprotocol/v4-chain/protocol/x/delaymsg/keeper" "github.com/dydxprotocol/v4-chain/protocol/x/delaymsg/types" @@ -144,6 +146,7 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } // EndBlock executes all ABCI EndBlock logic respective to the delaymsg module. It // returns no validator updates. func (am AppModule) EndBlock(ctx context.Context) error { - EndBlocker(sdk.UnwrapSDKContext(ctx), am.keeper) + sdkCtx := lib.UnwrapSDKContext(ctx, types.ModuleName) + EndBlocker(sdkCtx, am.keeper) return nil } diff --git a/protocol/x/epochs/keeper/epoch_info.go b/protocol/x/epochs/keeper/epoch_info.go index 733607034f..ff3126aa49 100644 --- a/protocol/x/epochs/keeper/epoch_info.go +++ b/protocol/x/epochs/keeper/epoch_info.go @@ -1,15 +1,17 @@ package keeper import ( - storetypes "cosmossdk.io/store/types" "fmt" + storetypes "cosmossdk.io/store/types" + errorsmod "cosmossdk.io/errors" "cosmossdk.io/store/prefix" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/dydxprotocol/v4-chain/protocol/lib" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" "github.com/dydxprotocol/v4-chain/protocol/x/epochs/types" gometrics "github.com/hashicorp/go-metrics" @@ -82,12 +84,15 @@ func (k Keeper) MaybeStartNextEpoch(ctx sdk.Context, id types.EpochInfoName) (ne epoch.CurrentEpochStartBlock = lib.MustConvertIntegerToUint32(ctx.BlockHeight()) k.setEpochInfo(ctx, epoch) - k.Logger(ctx).Info(fmt.Sprintf( - "Starting new epoch for [%s], current block time = %d, new epoch info = %+v", - epoch.Name, - ctx.BlockTime().Unix(), - epoch, - )) + log.InfoLog( + ctx, + fmt.Sprintf( + "Starting new epoch for [%s], current block time = %d, new epoch info = %+v", + epoch.Name, + ctx.BlockTime().Unix(), + epoch, + ), + ) ctx.EventManager().EmitEvent( types.NewEpochEvent(ctx, epoch, currentTick), @@ -120,12 +125,14 @@ func (k Keeper) CreateEpochInfo(ctx sdk.Context, epochInfo types.EpochInfo) erro } k.setEpochInfo(ctx, epochInfo) - k.Logger(ctx).Info(fmt.Sprintf( - "Created new epoch info (current block time = %v): %+v", - ctx.BlockTime().Unix(), - epochInfo), + log.InfoLog( + ctx, + fmt.Sprintf( + "Created new epoch info (current block time = %v): %+v", + ctx.BlockTime().Unix(), + epochInfo, + ), ) - return nil } diff --git a/protocol/x/epochs/keeper/grpc_query_epoch_info.go b/protocol/x/epochs/keeper/grpc_query_epoch_info.go index 49a5153c9b..67eaa80688 100644 --- a/protocol/x/epochs/keeper/grpc_query_epoch_info.go +++ b/protocol/x/epochs/keeper/grpc_query_epoch_info.go @@ -3,8 +3,8 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/epochs/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -17,7 +17,7 @@ func (k Keeper) EpochInfoAll( } var epochInfos []types.EpochInfo - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) epochInfoStore := k.getEpochInfoStore(ctx) @@ -43,7 +43,7 @@ func (k Keeper) EpochInfo( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) val, found := k.GetEpochInfo( ctx, diff --git a/protocol/x/epochs/module.go b/protocol/x/epochs/module.go index b4b893f0f4..058dfd2cbf 100644 --- a/protocol/x/epochs/module.go +++ b/protocol/x/epochs/module.go @@ -2,11 +2,12 @@ package epochs import ( "context" - "cosmossdk.io/core/appmodule" "encoding/json" "fmt" "time" + "cosmossdk.io/core/appmodule" + "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -16,6 +17,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/epochs/client/cli" "github.com/dydxprotocol/v4-chain/protocol/x/epochs/keeper" "github.com/dydxprotocol/v4-chain/protocol/x/epochs/types" @@ -145,7 +147,8 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock executes all ABCI BeginBlock logic respective to the epochs module. func (am AppModule) BeginBlock(ctx context.Context) error { + sdkCtx := lib.UnwrapSDKContext(ctx, types.ModuleName) defer telemetry.ModuleMeasureSince(am.Name(), time.Now(), telemetry.MetricKeyBeginBlocker) - BeginBlocker(sdk.UnwrapSDKContext(ctx), am.keeper) + BeginBlocker(sdkCtx, am.keeper) return nil } diff --git a/protocol/x/perpetuals/keeper/grpc_query_liquidity_tiers.go b/protocol/x/perpetuals/keeper/grpc_query_liquidity_tiers.go index e06b88375c..5b49af24fb 100644 --- a/protocol/x/perpetuals/keeper/grpc_query_liquidity_tiers.go +++ b/protocol/x/perpetuals/keeper/grpc_query_liquidity_tiers.go @@ -4,8 +4,8 @@ import ( "context" "cosmossdk.io/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -18,8 +18,8 @@ func (k Keeper) AllLiquidityTiers( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } + ctx := lib.UnwrapSDKContext(c, types.ModuleName) - ctx := sdk.UnwrapSDKContext(c) var liquidityTiers []types.LiquidityTier store := ctx.KVStore(k.storeKey) diff --git a/protocol/x/perpetuals/keeper/grpc_query_params.go b/protocol/x/perpetuals/keeper/grpc_query_params.go index 4f5761b2d4..fb5259fd66 100644 --- a/protocol/x/perpetuals/keeper/grpc_query_params.go +++ b/protocol/x/perpetuals/keeper/grpc_query_params.go @@ -2,7 +2,8 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -16,7 +17,9 @@ func (k Keeper) Params( return nil, status.Error(codes.InvalidArgument, "invalid request") } - params := k.GetParams(sdk.UnwrapSDKContext(c)) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) + + params := k.GetParams(ctx) return &types.QueryParamsResponse{Params: params}, nil } diff --git a/protocol/x/perpetuals/keeper/grpc_query_perpetual.go b/protocol/x/perpetuals/keeper/grpc_query_perpetual.go index ca7f2a9a46..124660d6ff 100644 --- a/protocol/x/perpetuals/keeper/grpc_query_perpetual.go +++ b/protocol/x/perpetuals/keeper/grpc_query_perpetual.go @@ -6,8 +6,8 @@ import ( "fmt" "cosmossdk.io/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -22,7 +22,7 @@ func (k Keeper) AllPerpetuals( } var perpetuals []types.Perpetual - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) store := ctx.KVStore(k.storeKey) perpetualStore := prefix.NewStore(store, []byte(types.PerpetualKeyPrefix)) @@ -48,7 +48,7 @@ func (k Keeper) Perpetual(c context.Context, req *types.QueryPerpetualRequest) ( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) val, err := k.GetPerpetual( ctx, diff --git a/protocol/x/perpetuals/keeper/grpc_query_premiums.go b/protocol/x/perpetuals/keeper/grpc_query_premiums.go index a916ef1968..39a3fd052e 100644 --- a/protocol/x/perpetuals/keeper/grpc_query_premiums.go +++ b/protocol/x/perpetuals/keeper/grpc_query_premiums.go @@ -2,7 +2,8 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -15,8 +16,9 @@ func (k Keeper) PremiumVotes( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } + ctx := lib.UnwrapSDKContext(c, types.ModuleName) - premiumVotes := k.GetPremiumVotes(sdk.UnwrapSDKContext(c)) + premiumVotes := k.GetPremiumVotes(ctx) return &types.QueryPremiumVotesResponse{PremiumVotes: premiumVotes}, nil } @@ -28,8 +30,9 @@ func (k Keeper) PremiumSamples( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } + ctx := lib.UnwrapSDKContext(c, types.ModuleName) - premiumSamples := k.GetPremiumSamples(sdk.UnwrapSDKContext(c)) + premiumSamples := k.GetPremiumSamples(ctx) return &types.QueryPremiumSamplesResponse{PremiumSamples: premiumSamples}, nil } diff --git a/protocol/x/perpetuals/keeper/msg_server_add_premium_votes.go b/protocol/x/perpetuals/keeper/msg_server_add_premium_votes.go index 7c8789dd6a..04df4b09aa 100644 --- a/protocol/x/perpetuals/keeper/msg_server_add_premium_votes.go +++ b/protocol/x/perpetuals/keeper/msg_server_add_premium_votes.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" ) @@ -13,7 +13,7 @@ func (k msgServer) AddPremiumVotes( goCtx context.Context, msg *types.MsgAddPremiumVotes, ) (*types.MsgAddPremiumVotesResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) // Validate. if err := k.Keeper.PerformStatefulPremiumVotesValidation(ctx, msg); err != nil { diff --git a/protocol/x/perpetuals/keeper/msg_server_create_perpetual.go b/protocol/x/perpetuals/keeper/msg_server_create_perpetual.go index 009f4fa43f..d23889c36f 100644 --- a/protocol/x/perpetuals/keeper/msg_server_create_perpetual.go +++ b/protocol/x/perpetuals/keeper/msg_server_create_perpetual.go @@ -2,10 +2,11 @@ package keeper import ( "context" + errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" ) @@ -21,7 +22,7 @@ func (k msgServer) CreatePerpetual( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) _, err := k.Keeper.CreatePerpetual( ctx, diff --git a/protocol/x/perpetuals/keeper/msg_server_set_liquidity_tier.go b/protocol/x/perpetuals/keeper/msg_server_set_liquidity_tier.go index 9266628707..e2be739d82 100644 --- a/protocol/x/perpetuals/keeper/msg_server_set_liquidity_tier.go +++ b/protocol/x/perpetuals/keeper/msg_server_set_liquidity_tier.go @@ -4,8 +4,8 @@ import ( "context" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" ) @@ -21,7 +21,7 @@ func (k msgServer) SetLiquidityTier( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if _, err := k.Keeper.SetLiquidityTier( ctx, diff --git a/protocol/x/perpetuals/keeper/msg_server_update_params.go b/protocol/x/perpetuals/keeper/msg_server_update_params.go index 3bf3f41cf4..4d9f18984a 100644 --- a/protocol/x/perpetuals/keeper/msg_server_update_params.go +++ b/protocol/x/perpetuals/keeper/msg_server_update_params.go @@ -4,8 +4,8 @@ import ( "context" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" ) @@ -21,7 +21,7 @@ func (k msgServer) UpdateParams( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.Keeper.SetParams(ctx, msg.Params); err != nil { return nil, err diff --git a/protocol/x/perpetuals/keeper/perpetual.go b/protocol/x/perpetuals/keeper/perpetual.go index 8a3b38f15e..87ce79edb1 100644 --- a/protocol/x/perpetuals/keeper/perpetual.go +++ b/protocol/x/perpetuals/keeper/perpetual.go @@ -1,13 +1,14 @@ package keeper import ( - storetypes "cosmossdk.io/store/types" "fmt" "math/big" "math/rand" "sort" "time" + storetypes "cosmossdk.io/store/types" + "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/client/constants" errorsmod "cosmossdk.io/errors" @@ -20,6 +21,7 @@ import ( "github.com/dydxprotocol/v4-chain/protocol/dtypes" indexerevents "github.com/dydxprotocol/v4-chain/protocol/indexer/events" "github.com/dydxprotocol/v4-chain/protocol/lib" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" epochstypes "github.com/dydxprotocol/v4-chain/protocol/x/epochs/types" "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" @@ -414,10 +416,11 @@ func (k Keeper) GetAddPremiumVotes( ) { newPremiumVotes, err := k.sampleAllPerpetuals(ctx) if err != nil { - k.Logger(ctx).Error(fmt.Sprintf( - "failed to sample perpetuals, err = %v", + log.ErrorLogWithError( + ctx, + "failed to sample perpetuals", err, - )) + ) } telemetry.SetGauge( @@ -459,10 +462,10 @@ func (k Keeper) sampleAllPerpetuals(ctx sdk.Context) ( if !exists { // Only log and increment stats if height is passed initialization period. if ctx.BlockHeight() > pricestypes.PriceDaemonInitializationBlocks { - k.Logger(ctx).Error( + log.ErrorLog( + ctx, "Perpetual does not have valid index price. Skipping premium", - constants.MarketIdLogKey, - perp.Params.MarketId, + constants.MarketIdLogKey, perp.Params.MarketId, ) telemetry.IncrCounterWithLabels( []string{ @@ -512,11 +515,14 @@ func (k Keeper) sampleAllPerpetuals(ctx sdk.Context) ( if premiumPpm == 0 { // Do not include zero premiums in message. - k.Logger(ctx).Debug( + + log.DebugLog( + ctx, fmt.Sprintf( "Perpetual (%d) has zero sampled premium. Not including in AddPremiumVotes message", perp.Params.Id, - )) + ), + ) continue } @@ -548,11 +554,14 @@ func (k Keeper) GetRemoveSampleTailsFunc( if totalRemoval == 0 { return premiums } else if totalRemoval >= int64(len(premiums)) { - k.Logger(ctx).Error(fmt.Sprintf( - "GetRemoveSampleTailsFunc: totalRemoval(%d) > length of premium samples (%d); skip removing", - totalRemoval, - len(premiums), - )) + log.ErrorLog( + ctx, + fmt.Sprintf( + "GetRemoveSampleTailsFunc: totalRemoval(%d) > length of premium samples (%d); skip removing", + totalRemoval, + len(premiums), + ), + ) return premiums } @@ -625,7 +634,8 @@ func (k Keeper) MaybeProcessNewFundingTickEpoch(ctx sdk.Context) { premiumPpm, found := perpIdToPremiumPpm[perp.Params.Id] if !found { - k.Logger(ctx).Info( + log.InfoLog( + ctx, fmt.Sprintf( "MaybeProcessNewFundingTickEpoch: No samples found for perpetual (%v) during `funding-tick` epoch\n", perp.Params.Id, diff --git a/protocol/x/perpetuals/module.go b/protocol/x/perpetuals/module.go index 5a5a2954e7..963da127a7 100644 --- a/protocol/x/perpetuals/module.go +++ b/protocol/x/perpetuals/module.go @@ -2,11 +2,13 @@ package perpetuals import ( "context" - "cosmossdk.io/core/appmodule" "encoding/json" "fmt" "time" + "cosmossdk.io/core/appmodule" + "github.com/dydxprotocol/v4-chain/protocol/lib" + "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -148,6 +150,7 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } // returns no validator updates. func (am AppModule) EndBlock(ctx context.Context) error { defer telemetry.ModuleMeasureSince(am.Name(), time.Now(), telemetry.MetricKeyEndBlocker) - EndBlocker(sdk.UnwrapSDKContext(ctx), am.keeper) + sdkCtx := lib.UnwrapSDKContext(ctx, types.ModuleName) + EndBlocker(sdkCtx, am.keeper) return nil } diff --git a/protocol/x/prices/keeper/grpc_query_market.go b/protocol/x/prices/keeper/grpc_query_market.go index 52a9f1c427..11edcf7b67 100644 --- a/protocol/x/prices/keeper/grpc_query_market.go +++ b/protocol/x/prices/keeper/grpc_query_market.go @@ -5,8 +5,8 @@ import ( errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/prices/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -21,7 +21,7 @@ func (k Keeper) AllMarketPrices( } var marketPrices []types.MarketPrice - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) marketPriceStore := k.getMarketPriceStore(ctx) @@ -52,7 +52,7 @@ func (k Keeper) MarketPrice( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) val, err := k.GetMarketPrice( ctx, @@ -78,7 +78,7 @@ func (k Keeper) AllMarketParams( } var marketParams []types.MarketParam - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) marketParamStore := k.getMarketParamStore(ctx) @@ -109,7 +109,7 @@ func (k Keeper) MarketParam( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) val, exists := k.GetMarketParam( ctx, diff --git a/protocol/x/prices/keeper/msg_server_create_oracle_market.go b/protocol/x/prices/keeper/msg_server_create_oracle_market.go index 512ab285cc..837666916c 100644 --- a/protocol/x/prices/keeper/msg_server_create_oracle_market.go +++ b/protocol/x/prices/keeper/msg_server_create_oracle_market.go @@ -2,13 +2,14 @@ package keeper import ( "context" + "github.com/cosmos/cosmos-sdk/telemetry" pricefeedmetrics "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/metrics" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" gometrics "github.com/hashicorp/go-metrics" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/dydxprotocol/v4-chain/protocol/x/prices/types" ) @@ -41,7 +42,7 @@ func (k msgServer) CreateOracleMarket( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) // Use zero oracle price to create the new market. // Note that valid oracle price updates cannot be zero (checked in MsgUpdateMarketPrices.ValidateBasic), diff --git a/protocol/x/prices/keeper/msg_server_update_market_param.go b/protocol/x/prices/keeper/msg_server_update_market_param.go index a51796c089..b18a55a515 100644 --- a/protocol/x/prices/keeper/msg_server_update_market_param.go +++ b/protocol/x/prices/keeper/msg_server_update_market_param.go @@ -2,13 +2,14 @@ package keeper import ( "context" + "github.com/cosmos/cosmos-sdk/telemetry" pricefeedmetrics "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/metrics" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" gometrics "github.com/hashicorp/go-metrics" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/dydxprotocol/v4-chain/protocol/x/prices/types" ) @@ -41,7 +42,7 @@ func (k msgServer) UpdateMarketParam( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if _, err = k.Keeper.ModifyMarketParam(ctx, msg.MarketParam); err != nil { return nil, err diff --git a/protocol/x/prices/keeper/msg_server_update_market_prices.go b/protocol/x/prices/keeper/msg_server_update_market_prices.go index 5e42263a5b..e5e21807f3 100644 --- a/protocol/x/prices/keeper/msg_server_update_market_prices.go +++ b/protocol/x/prices/keeper/msg_server_update_market_prices.go @@ -2,10 +2,10 @@ package keeper import ( "context" - "fmt" "github.com/cosmos/cosmos-sdk/telemetry" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" "github.com/dydxprotocol/v4-chain/protocol/x/prices/types" ) @@ -14,22 +14,27 @@ func (k msgServer) UpdateMarketPrices( goCtx context.Context, msg *types.MsgUpdateMarketPrices, ) (*types.MsgUpdateMarketPricesResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) // Validate. // Note that non-deterministic validation is skipped, because the prices have been deemed // valid w/r/t index prices in `ProcessProposal` in order for the msg to reach this step. if err := k.Keeper.PerformStatefulPriceUpdateValidation(ctx, msg, false); err != nil { - errMsg := fmt.Sprintf("PerformStatefulPriceUpdateValidation failed, err = %v", err) - k.Keeper.Logger(ctx).Error(errMsg) + log.ErrorLogWithError( + ctx, + "PerformStatefulPriceUpdateValidation failed", + err, + ) panic(err) } // Update state. if err := k.Keeper.UpdateMarketPrices(ctx, msg.MarketPriceUpdates); err != nil { // This should never happen, because the updates were validated above. - errMsg := fmt.Sprintf("UpdateMarketPrices failed, err = %v", err) - k.Keeper.Logger(ctx).Error(errMsg) + log.ErrorLogWithError( + ctx, + "UpdateMarketPrices failed", + err, + ) panic(err) } diff --git a/protocol/x/prices/keeper/update_price.go b/protocol/x/prices/keeper/update_price.go index 669e44a733..6f4a5162a2 100644 --- a/protocol/x/prices/keeper/update_price.go +++ b/protocol/x/prices/keeper/update_price.go @@ -2,16 +2,17 @@ package keeper import ( "fmt" - "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/client/constants" "sort" "time" - "cosmossdk.io/log" + "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/client/constants" + gometrics "github.com/hashicorp/go-metrics" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" pricefeedmetrics "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/metrics" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" "github.com/dydxprotocol/v4-chain/protocol/x/prices/types" ) @@ -40,7 +41,11 @@ func (k Keeper) GetValidMarketPriceUpdates( // 1. Get all markets from state. allMarketParamPrices, err := k.GetAllMarketParamPrices(ctx) if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("error getting all market param prices: %v", err)) + log.ErrorLogWithError( + ctx, + "error getting all market param prices", + err, + ) // If there is an error, return an empty list of price updates. We don't want to introduce // liveness issues due to an error in market state. } @@ -68,7 +73,8 @@ func (k Keeper) GetValidMarketPriceUpdates( // there will be a delay in populating index prices after network genesis or a network restart, or when a // market is created, it takes the daemon some time to warm up. if !k.IsRecentlyAvailable(ctx, marketId) { - k.Logger(ctx).Error( + log.ErrorLog( + ctx, "Index price for market does not exist", constants.MarketIdLogKey, marketId, @@ -81,7 +87,8 @@ func (k Keeper) GetValidMarketPriceUpdates( // error. if indexPrice == 0 { metrics.IncrCountMetricWithLabels(types.ModuleName, metrics.IndexPriceIsZero, marketMetricsLabel) - k.Logger(ctx).Error( + log.ErrorLog( + ctx, "Unexpected error: index price for market is zero", constants.MarketIdLogKey, marketId, @@ -98,7 +105,12 @@ func (k Keeper) GetValidMarketPriceUpdates( // restart, or when a market is created, because they depend on present index prices, and it takes the // daemon some time to warm up. if !k.IsRecentlyAvailable(ctx, marketId) { - k.Logger(ctx).Error(fmt.Sprintf("Smoothed price for market (%v) does not exist", marketId)) + log.ErrorLog( + ctx, + "Smoothed price for market does not exist", + constants.MarketIdLogKey, + marketId, + ) } historicalSmoothedPrices = []uint64{indexPrice} } @@ -117,7 +129,7 @@ func (k Keeper) GetValidMarketPriceUpdates( // decision / amount. if isAboveRequiredMinPriceChange(marketParamPrice, indexPrice) { logPriceUpdateBehavior( - k.Logger(ctx), + ctx, marketParamPrice, proposalPrice, indexPrice, @@ -148,7 +160,7 @@ func (k Keeper) GetValidMarketPriceUpdates( } func logPriceUpdateBehavior( - logger log.Logger, + ctx sdk.Context, marketParamPrice types.MarketParamPrice, proposalPrice uint64, indexPrice uint64, @@ -174,15 +186,18 @@ func logPriceUpdateBehavior( labels..., ) } - logger.Info(fmt.Sprintf( - "Proposal price (%v) %v for market (%v), index price (%v), oracle price (%v), min price change (%v)", - proposalPrice, - loggingVerb, - marketParamPrice.Param.Id, - indexPrice, - marketParamPrice.Price.Price, - getMinPriceChangeAmountForMarket(marketParamPrice), - )) + log.InfoLog( + ctx, + fmt.Sprintf( + "Proposal price (%v) %v for market (%v), index price (%v), oracle price (%v), min price change (%v)", + proposalPrice, + loggingVerb, + marketParamPrice.Param.Id, + indexPrice, + marketParamPrice.Price.Price, + getMinPriceChangeAmountForMarket(marketParamPrice), + ), + ) } type proposeCancellationReason struct { diff --git a/protocol/x/prices/keeper/validate_market_price_updates.go b/protocol/x/prices/keeper/validate_market_price_updates.go index 7d56119aad..4cb99c4ce1 100644 --- a/protocol/x/prices/keeper/validate_market_price_updates.go +++ b/protocol/x/prices/keeper/validate_market_price_updates.go @@ -1,12 +1,14 @@ package keeper import ( - errorsmod "cosmossdk.io/errors" "fmt" - errorlib "github.com/dydxprotocol/v4-chain/protocol/lib/error" "math/big" "time" + errorsmod "cosmossdk.io/errors" + errorlib "github.com/dydxprotocol/v4-chain/protocol/lib/error" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" pricefeedmetrics "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/metrics" @@ -150,7 +152,10 @@ func (k Keeper) performNonDeterministicStatefulValidation( metrics.MissingPriceUpdates, metrics.Count, ) - k.Logger(ctx).Info(fmt.Sprintf("markets were not included in the price updates: %+v", missingMarketIds)) + log.InfoLog( + ctx, + fmt.Sprintf("markets were not included in the price updates: %+v", missingMarketIds), + ) } return nil diff --git a/protocol/x/ratelimit/keeper/keeper.go b/protocol/x/ratelimit/keeper/keeper.go index 6eca7da2ba..18ec2b89ff 100644 --- a/protocol/x/ratelimit/keeper/keeper.go +++ b/protocol/x/ratelimit/keeper/keeper.go @@ -6,7 +6,7 @@ import ( "time" errorsmod "cosmossdk.io/errors" - "cosmossdk.io/log" + cosmoslog "cosmossdk.io/log" "cosmossdk.io/store/prefix" storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" @@ -14,6 +14,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/dydxprotocol/v4-chain/protocol/dtypes" "github.com/dydxprotocol/v4-chain/protocol/lib" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" "github.com/dydxprotocol/v4-chain/protocol/x/ratelimit/types" ratelimitutil "github.com/dydxprotocol/v4-chain/protocol/x/ratelimit/util" @@ -226,7 +227,8 @@ func (k Keeper) UpdateAllCapacitiesEndBlocker( if timeSinceLastBlock < 0 { // This violates an invariant (current block time > prev block time). // Since this is in the `EndBlocker`, we log an error instead of panicking. - k.Logger(ctx).Error( + log.ErrorLog( + ctx, fmt.Sprintf( "timeSinceLastBlock (%v) <= 0; skipping UpdateAllCapacitiesEndBlocker", timeSinceLastBlock, @@ -268,12 +270,13 @@ func (k Keeper) updateCapacityForLimitParams( ) if err != nil { - k.Logger(ctx).Error( + log.ErrorLogWithError( + ctx, fmt.Sprintf( - "error calculating new capacity list for denom %v: %v. Skipping update.", + "error calculating new capacity list for denom %v. Skipping update.", limitParams.Denom, - err, ), + err, ) return } @@ -310,8 +313,8 @@ func (k Keeper) HasAuthority(authority string) bool { return ok } -func (k Keeper) Logger(ctx sdk.Context) log.Logger { - return ctx.Logger().With(log.ModuleKey, fmt.Sprintf("x/%s", types.ModuleName)) +func (k Keeper) Logger(ctx sdk.Context) cosmoslog.Logger { + return ctx.Logger().With(cosmoslog.ModuleKey, fmt.Sprintf("x/%s", types.ModuleName)) } func (k Keeper) InitializeForGenesis(ctx sdk.Context) { diff --git a/protocol/x/ratelimit/module.go b/protocol/x/ratelimit/module.go index 526067e4e7..4c79e9573b 100644 --- a/protocol/x/ratelimit/module.go +++ b/protocol/x/ratelimit/module.go @@ -15,6 +15,7 @@ import ( cdctypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/ratelimit/client/cli" "github.com/dydxprotocol/v4-chain/protocol/x/ratelimit/keeper" "github.com/dydxprotocol/v4-chain/protocol/x/ratelimit/types" @@ -152,7 +153,7 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } // EndBlock contains the logic that is automatically triggered at the end of each block func (am AppModule) EndBlock(ctx context.Context) error { - sdkCtx := sdk.UnwrapSDKContext(ctx) + sdkCtx := lib.UnwrapSDKContext(ctx, types.ModuleName) am.keeper.UpdateAllCapacitiesEndBlocker(sdkCtx) return nil diff --git a/protocol/x/rewards/keeper/keeper.go b/protocol/x/rewards/keeper/keeper.go index 1959e9cf65..affbadee77 100644 --- a/protocol/x/rewards/keeper/keeper.go +++ b/protocol/x/rewards/keeper/keeper.go @@ -6,18 +6,18 @@ import ( "time" errorsmod "cosmossdk.io/errors" - "cosmossdk.io/log" + cosmoslog "cosmossdk.io/log" sdkmath "cosmossdk.io/math" "cosmossdk.io/store/prefix" storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/client/constants" "github.com/dydxprotocol/v4-chain/protocol/dtypes" indexerevents "github.com/dydxprotocol/v4-chain/protocol/indexer/events" "github.com/dydxprotocol/v4-chain/protocol/indexer/indexer_manager" "github.com/dydxprotocol/v4-chain/protocol/lib" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" assettypes "github.com/dydxprotocol/v4-chain/protocol/x/assets/types" clobtypes "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" @@ -78,8 +78,8 @@ func (k Keeper) GetIndexerEventManager() indexer_manager.IndexerEventManager { return k.indexerEventManager } -func (k Keeper) Logger(ctx sdk.Context) log.Logger { - return ctx.Logger().With(log.ModuleKey, fmt.Sprintf("x/%s", types.ModuleName)) +func (k Keeper) Logger(ctx sdk.Context) cosmoslog.Logger { + return ctx.Logger().With(cosmoslog.ModuleKey, fmt.Sprintf("x/%s", types.ModuleName)) } func (k Keeper) InitializeForGenesis(ctx sdk.Context) { @@ -150,7 +150,11 @@ func (k Keeper) AddRewardSharesForFill( takerAddress, takerWeight, ); err != nil { - k.Logger(ctx).Error("Failed to add rewards share to address", constants.ErrorLogKey, err) + log.ErrorLogWithError( + ctx, + "Failed to add rewards share to address", + err, + ) } } @@ -163,7 +167,11 @@ func (k Keeper) AddRewardSharesForFill( makerAddress, makerWeight, ); err != nil { - k.Logger(ctx).Error("Failed to add rewards share to address", constants.ErrorLogKey, err) + log.ErrorLogWithError( + ctx, + "Failed to add rewards share to address", + err, + ) } } } @@ -340,14 +348,14 @@ func (k Keeper) ProcessRewardsForBlock( }, }, ); err != nil { - k.Logger(ctx).Error( + log.ErrorLogWithError( + ctx, "Failed to send reward tokens from treasury account to address", + err, "treasury_account", params.TreasuryAccount, "address", share.Address, - constants.ErrorLogKey, - err, ) } else { rewardIndexerEvent.TradingRewards = append(rewardIndexerEvent.TradingRewards, diff --git a/protocol/x/rewards/module.go b/protocol/x/rewards/module.go index c34b7455d0..a17a3e1c47 100644 --- a/protocol/x/rewards/module.go +++ b/protocol/x/rewards/module.go @@ -2,10 +2,12 @@ package rewards import ( "context" - "cosmossdk.io/core/appmodule" "encoding/json" "fmt" + + "cosmossdk.io/core/appmodule" "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/client/constants" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -152,7 +154,7 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } // EndBlock contains the logic that is automatically triggered at the end of each block func (am AppModule) EndBlock(ctx context.Context) error { - sdkCtx := sdk.UnwrapSDKContext(ctx) + sdkCtx := lib.UnwrapSDKContext(ctx, types.ModuleName) if err := am.keeper.ProcessRewardsForBlock(sdkCtx); err != nil { // Panicking here will only happen due to misconfiguration of the rewards module, // and will lead to consensus failure. diff --git a/protocol/x/vest/keeper/keeper.go b/protocol/x/vest/keeper/keeper.go index b0f2e66314..20fdf0716c 100644 --- a/protocol/x/vest/keeper/keeper.go +++ b/protocol/x/vest/keeper/keeper.go @@ -6,7 +6,7 @@ import ( "time" errorsmod "cosmossdk.io/errors" - "cosmossdk.io/log" + cosmoslog "cosmossdk.io/log" sdkmath "cosmossdk.io/math" "cosmossdk.io/store/prefix" storetypes "cosmossdk.io/store/types" @@ -14,8 +14,8 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/client/constants" "github.com/dydxprotocol/v4-chain/protocol/lib" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" "github.com/dydxprotocol/v4-chain/protocol/x/vest/types" gometrics "github.com/hashicorp/go-metrics" @@ -52,8 +52,8 @@ func (k Keeper) HasAuthority(authority string) bool { return ok } -func (k Keeper) Logger(ctx sdk.Context) log.Logger { - return ctx.Logger().With(log.ModuleKey, fmt.Sprintf("x/%s", types.ModuleName)) +func (k Keeper) Logger(ctx sdk.Context) cosmoslog.Logger { + return ctx.Logger().With(cosmoslog.ModuleKey, fmt.Sprintf("x/%s", types.ModuleName)) } // Process vesting for all vest entries. Intended to be called in BeginBlocker. @@ -121,9 +121,9 @@ func (k Keeper) ProcessVesting(ctx sdk.Context) { // This should never happen. However, if it does, we should not panic. // ProcessVesting is called in BeginBlocker, and panicking in BeginBlocker could cause liveness issues. // Instead, we generate an informative error log, emit an error metric, and continue. - k.Logger(ctx).Error( + log.ErrorLogWithError( + ctx, "unexpected internal error: failed to transfer vest amount to treasury account", - constants.ErrorLogKey, err, "vester_account", entry.VesterAccount, diff --git a/protocol/x/vest/keeper/msg_server.go b/protocol/x/vest/keeper/msg_server.go index 15422e6517..daea85284f 100644 --- a/protocol/x/vest/keeper/msg_server.go +++ b/protocol/x/vest/keeper/msg_server.go @@ -2,11 +2,12 @@ package keeper import ( "context" + errorsmod "cosmossdk.io/errors" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/vest/types" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" ) @@ -34,7 +35,7 @@ func (k msgServer) SetVestEntry( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.Keeper.SetVestEntry(ctx, msg.Entry); err != nil { return nil, err } @@ -54,7 +55,7 @@ func (k msgServer) DeleteVestEntry( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) err := k.Keeper.DeleteVestEntry(ctx, msg.VesterAccount) if err != nil { return nil, err diff --git a/protocol/x/vest/module.go b/protocol/x/vest/module.go index 2eb5a268d1..0bbd1bf756 100644 --- a/protocol/x/vest/module.go +++ b/protocol/x/vest/module.go @@ -2,10 +2,11 @@ package vest import ( "context" - "cosmossdk.io/core/appmodule" "encoding/json" "fmt" + "cosmossdk.io/core/appmodule" + "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -14,6 +15,7 @@ import ( cdctypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/vest/client/cli" "github.com/dydxprotocol/v4-chain/protocol/x/vest/keeper" "github.com/dydxprotocol/v4-chain/protocol/x/vest/types" @@ -151,6 +153,7 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock contains the logic that is automatically triggered at the beginning of each block func (am AppModule) BeginBlock(ctx context.Context) error { - am.keeper.ProcessVesting(sdk.UnwrapSDKContext(ctx)) + sdkCtx := lib.UnwrapSDKContext(ctx, types.ModuleName) + am.keeper.ProcessVesting(sdkCtx) return nil }