From 1602f8dd2d20bf7b9a3afaf7d05d5f2bfc95c78c Mon Sep 17 00:00:00 2001 From: Guillaume Thiolliere <gui.thiolliere@gmail.com> Date: Tue, 23 Mar 2021 15:53:46 +0100 Subject: [PATCH] Add tracing logic in pallet macro for hooks and dispatchables (#8305) * span in hooks * add span for dispatchable * Update frame/support/src/lib.rs * Update frame/support/src/lib.rs Co-authored-by: David <dvdplm@gmail.com> Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> Co-authored-by: David <dvdplm@gmail.com> --- .../frame/support/procedural/src/pallet/expand/call.rs | 8 ++++++-- .../support/procedural/src/pallet/expand/hooks.rs | 10 ++++++++++ substrate/frame/support/src/lib.rs | 3 +++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/substrate/frame/support/procedural/src/pallet/expand/call.rs b/substrate/frame/support/procedural/src/pallet/expand/call.rs index 137e055405a..295cf14d37f 100644 --- a/substrate/frame/support/procedural/src/pallet/expand/call.rs +++ b/substrate/frame/support/procedural/src/pallet/expand/call.rs @@ -162,9 +162,13 @@ pub fn expand_call(def: &mut Def) -> proc_macro2::TokenStream { ) -> #frame_support::dispatch::DispatchResultWithPostInfo { match self { #( - Self::#fn_name( #( #args_name, )* ) => + Self::#fn_name( #( #args_name, )* ) => { + #frame_support::sp_tracing::enter_span!( + #frame_support::sp_tracing::trace_span!(stringify!(#fn_name)) + ); <#pallet_ident<#type_use_gen>>::#fn_name(origin, #( #args_name, )* ) - .map(Into::into).map_err(Into::into), + .map(Into::into).map_err(Into::into) + }, )* Self::__Ignore(_, _) => { let _ = origin; // Use origin for empty Call enum diff --git a/substrate/frame/support/procedural/src/pallet/expand/hooks.rs b/substrate/frame/support/procedural/src/pallet/expand/hooks.rs index 3976f2c602d..2d12d5ecf9d 100644 --- a/substrate/frame/support/procedural/src/pallet/expand/hooks.rs +++ b/substrate/frame/support/procedural/src/pallet/expand/hooks.rs @@ -55,6 +55,9 @@ pub fn expand_hooks(def: &mut Def) -> proc_macro2::TokenStream { for #pallet_ident<#type_use_gen> #where_clause { fn on_finalize(n: <T as #frame_system::Config>::BlockNumber) { + #frame_support::sp_tracing::enter_span!( + #frame_support::sp_tracing::trace_span!("on_finalize") + ); < Self as #frame_support::traits::Hooks< <T as #frame_system::Config>::BlockNumber @@ -86,6 +89,9 @@ pub fn expand_hooks(def: &mut Def) -> proc_macro2::TokenStream { fn on_initialize( n: <T as #frame_system::Config>::BlockNumber ) -> #frame_support::weights::Weight { + #frame_support::sp_tracing::enter_span!( + #frame_support::sp_tracing::trace_span!("on_initialize") + ); < Self as #frame_support::traits::Hooks< <T as #frame_system::Config>::BlockNumber @@ -99,6 +105,10 @@ pub fn expand_hooks(def: &mut Def) -> proc_macro2::TokenStream { for #pallet_ident<#type_use_gen> #where_clause { fn on_runtime_upgrade() -> #frame_support::weights::Weight { + #frame_support::sp_tracing::enter_span!( + #frame_support::sp_tracing::trace_span!("on_runtime_update") + ); + // log info about the upgrade. let new_storage_version = #frame_support::crate_to_pallet_version!(); let pallet_name = < diff --git a/substrate/frame/support/src/lib.rs b/substrate/frame/support/src/lib.rs index d0d034a55f5..220e7a06bdf 100644 --- a/substrate/frame/support/src/lib.rs +++ b/substrate/frame/support/src/lib.rs @@ -1229,6 +1229,9 @@ pub mod pallet_prelude { /// NOTE: OnRuntimeUpgrade is implemented with `Hooks::on_runtime_upgrade` and some additional /// logic. E.g. logic to write pallet version into storage. /// +/// NOTE: The macro also adds some tracing logic when implementing the above traits. The following +/// hooks emit traces: `on_initialize`, `on_finalize` and `on_runtime_upgrade`. +/// /// # Call: `#[pallet::call]` mandatory /// /// Implementation of pallet dispatchables. -- GitLab