From 8b6bbd36f49c2f2995b23044e178de968be4f632 Mon Sep 17 00:00:00 2001 From: Robert Pirtle Date: Fri, 25 Aug 2023 15:14:35 -0700 Subject: [PATCH] feat(metrics): add timing metrics to abci methods (#1669) * feat(metrics): add timing metrics to abci methods * update changelog --- CHANGELOG.md | 2 ++ x/auction/abci.go | 4 ++++ x/bep3/abci.go | 6 ++++++ x/cdp/abci.go | 5 +++++ x/committee/abci.go | 6 ++++++ x/hard/abci.go | 6 ++++++ x/incentive/abci.go | 5 +++++ x/issuance/abci.go | 6 ++++++ x/kavadist/abci.go | 6 ++++++ x/pricefeed/abci.go | 4 ++++ 10 files changed, 50 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f9f98c4..e2bbf17e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features - (metrics) [#1668] Adds non-state breaking x/metrics module for custom telemetry. +- (metrics) [#1669] Add performance timing metrics to all Begin/EndBlockers ### Bug Fixes - (evmutil) [#1655] Initialize x/evmutil module account in InitGenesis @@ -280,6 +281,7 @@ the [changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.38.4/CHANGELOG.md). large-scale simulations remotely using aws-batch [#1668]: https://github.com/Kava-Labs/kava/pull/1668 +[#1669]: https://github.com/Kava-Labs/kava/pull/1669 [#1655]: https://github.com/Kava-Labs/kava/pull/1655 [#1624]: https://github.com/Kava-Labs/kava/pull/1624 [#1631]: https://github.com/Kava-Labs/kava/pull/1631 diff --git a/x/auction/abci.go b/x/auction/abci.go index 5b868c68..6203f6d1 100644 --- a/x/auction/abci.go +++ b/x/auction/abci.go @@ -2,7 +2,9 @@ package auction import ( "errors" + "time" + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/kava-labs/kava/x/auction/keeper" @@ -12,6 +14,8 @@ import ( // BeginBlocker closes all expired auctions at the end of each block. It panics if // there's an error other than ErrAuctionNotFound. func BeginBlocker(ctx sdk.Context, k keeper.Keeper) { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) + err := k.CloseExpiredAuctions(ctx) if err != nil && !errors.Is(err, types.ErrAuctionNotFound) { panic(err) diff --git a/x/bep3/abci.go b/x/bep3/abci.go index bf62c1df..194ef1f2 100644 --- a/x/bep3/abci.go +++ b/x/bep3/abci.go @@ -1,13 +1,19 @@ package bep3 import ( + "time" + + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/kava-labs/kava/x/bep3/keeper" + "github.com/kava-labs/kava/x/bep3/types" ) // BeginBlocker on every block expires outdated atomic swaps and removes closed // swap from long term storage (default storage time of 1 week) func BeginBlocker(ctx sdk.Context, k keeper.Keeper) { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) + k.UpdateTimeBasedSupplyLimits(ctx) k.UpdateExpiredAtomicSwaps(ctx) k.DeleteClosedAtomicSwapsFromLongtermStorage(ctx) diff --git a/x/cdp/abci.go b/x/cdp/abci.go index 7601c64d..6a66a482 100644 --- a/x/cdp/abci.go +++ b/x/cdp/abci.go @@ -2,17 +2,22 @@ package cdp import ( "errors" + "time" + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" abci "github.com/tendermint/tendermint/abci/types" "github.com/kava-labs/kava/x/cdp/keeper" + "github.com/kava-labs/kava/x/cdp/types" pricefeedtypes "github.com/kava-labs/kava/x/pricefeed/types" ) // BeginBlocker compounds the debt in outstanding cdps and liquidates cdps that are below the required collateralization ratio func BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock, k keeper.Keeper) { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) + params := k.GetParams(ctx) for _, cp := range params.CollateralParams { diff --git a/x/committee/abci.go b/x/committee/abci.go index 8cab4a64..3e4a7459 100644 --- a/x/committee/abci.go +++ b/x/committee/abci.go @@ -1,14 +1,20 @@ package committee import ( + "time" + + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" abci "github.com/tendermint/tendermint/abci/types" "github.com/kava-labs/kava/x/committee/keeper" + "github.com/kava-labs/kava/x/committee/types" ) // BeginBlocker runs at the start of every block. func BeginBlocker(ctx sdk.Context, _ abci.RequestBeginBlock, k keeper.Keeper) { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) + k.ProcessProposals(ctx) } diff --git a/x/hard/abci.go b/x/hard/abci.go index 17e6cb7e..8041011e 100644 --- a/x/hard/abci.go +++ b/x/hard/abci.go @@ -1,11 +1,17 @@ package hard import ( + "time" + + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/kava-labs/kava/x/hard/keeper" + "github.com/kava-labs/kava/x/hard/types" ) // BeginBlocker updates interest rates func BeginBlocker(ctx sdk.Context, k keeper.Keeper) { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) + k.ApplyInterestRateUpdates(ctx) } diff --git a/x/incentive/abci.go b/x/incentive/abci.go index feac0e6c..02d8b67c 100644 --- a/x/incentive/abci.go +++ b/x/incentive/abci.go @@ -2,14 +2,19 @@ package incentive import ( "fmt" + "time" + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/kava-labs/kava/x/incentive/keeper" + "github.com/kava-labs/kava/x/incentive/types" ) // BeginBlocker runs at the start of every block func BeginBlocker(ctx sdk.Context, k keeper.Keeper) { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) + params := k.GetParams(ctx) for _, rp := range params.USDXMintingRewardPeriods { diff --git a/x/issuance/abci.go b/x/issuance/abci.go index 126c02c0..cb6ddca7 100644 --- a/x/issuance/abci.go +++ b/x/issuance/abci.go @@ -1,12 +1,18 @@ package issuance import ( + "time" + + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/kava-labs/kava/x/issuance/keeper" + "github.com/kava-labs/kava/x/issuance/types" ) // BeginBlocker iterates over each asset and seizes coins from blocked addresses by returning them to the asset owner func BeginBlocker(ctx sdk.Context, k keeper.Keeper) { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) + err := k.SeizeCoinsForBlockableAssets(ctx) if err != nil { panic(err) diff --git a/x/kavadist/abci.go b/x/kavadist/abci.go index e852714e..dbe53d41 100644 --- a/x/kavadist/abci.go +++ b/x/kavadist/abci.go @@ -1,12 +1,18 @@ package kavadist import ( + "time" + + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/kava-labs/kava/x/kavadist/keeper" + "github.com/kava-labs/kava/x/kavadist/types" ) func BeginBlocker(ctx sdk.Context, k keeper.Keeper) { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) + err := k.MintPeriodInflation(ctx) if err != nil { panic(err) diff --git a/x/pricefeed/abci.go b/x/pricefeed/abci.go index 98754c06..8f32c629 100644 --- a/x/pricefeed/abci.go +++ b/x/pricefeed/abci.go @@ -2,7 +2,9 @@ package pricefeed import ( "errors" + "time" + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/kava-labs/kava/x/pricefeed/keeper" "github.com/kava-labs/kava/x/pricefeed/types" @@ -10,6 +12,8 @@ import ( // EndBlocker updates the current pricefeed func EndBlocker(ctx sdk.Context, k keeper.Keeper) { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyEndBlocker) + // Update the current price of each asset. for _, market := range k.GetMarkets(ctx) { if !market.Active {