Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 10
feat: adding additional fine grained spans#142
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Uh oh!
There was an error while loading. Please reload this page.
Merged
Changes from all commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
c840315
trace: add spans to build_empty_payload, parse_evolve_payload, valida…
chatton ec5bcb0
chore: merge main
chatton 6ea5e78
chore: addressing PR feedback
chatton 0bf3609
chore: fix formatting
chatton e048ebb
Merge branch 'main' into cian/add-tier1-tracing-spans
chatton 41e9431
chore: format
chatton 0286a59
Merge branch 'main' into cian/add-tier1-tracing-spans
chatton c2b1f53
Merge branch 'main' into cian/add-tier1-tracing-spans
chatton eed4933
Merge branch 'main' into cian/add-tier1-tracing-spans
chatton 667a781
Merge remote-tracking branch 'origin/main' into cian/add-tier1-tracin…
chatton 13d5a16
Merge branch 'main' into cian/add-tier1-tracing-spans
chatton cbd132d
chore: add pool
chatton File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| /// records `duration_ms` on the current tracing span when dropped, | ||
| /// ensuring duration is captured even on early-return error paths. | ||
| pub(crate) struct RecordDurationOnDrop(std::time::Instant); | ||
| impl RecordDurationOnDrop { | ||
| pub(crate) fn new() -> Self { | ||
| Self(std::time::Instant::now()) | ||
| } | ||
| } | ||
| impl Drop for RecordDurationOnDrop { | ||
| fn drop(&mut self) { | ||
| tracing::Span::current().record("duration_ms", self.0.elapsed().as_millis() as u64); | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,6 @@ | ||
| use std::sync::Arc; | ||
| use crate::tracing_ext::RecordDurationOnDrop; | ||
| use alloy_consensus::{ | ||
| constants::EIP1559_TX_TYPE_ID, | ||
| transaction::{Recovered, TxHashRef}, | ||
| @@ -410,6 +411,11 @@ where | ||
| /// Validates an `EvNode` transaction. Returns an optional override balance | ||
| /// for sponsored transactions (the sponsor's balance), so the pool uses | ||
| /// the sponsor's balance for pending/queued ordering instead of the executor's. | ||
| #[instrument(skip(self, pooled, sender_balance, state), fields( | ||
| tx_hash = %pooled.hash(), | ||
| is_evnode = matches!(pooled.transaction().inner(), EvTxEnvelope::EvNode(_)), | ||
| duration_ms = tracing::field::Empty, | ||
| ))] | ||
chatton marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||
| fn validate_evnode( | ||
| &self, | ||
| pooled: &EvPooledTransaction, | ||
| @@ -419,6 +425,7 @@ where | ||
| where | ||
| Client: StateProviderFactory, | ||
| { | ||
| let _duration = RecordDurationOnDrop::new(); | ||
| // Unified deploy allowlist check (covers both Ethereum and EvNode txs). | ||
| if let Some(settings) = &self.deploy_allowlist { | ||
| let is_top_level_create = match pooled.transaction().inner() { | ||
| @@ -502,7 +509,7 @@ where | ||
| origin: TransactionOrigin, | ||
| transaction: <Self as TransactionValidator>::Transaction, | ||
| ) -> TransactionValidationOutcome<Self::Transaction> { | ||
| let _start = std::time::Instant::now(); | ||
| let _duration = RecordDurationOnDrop::new(); | ||
| let mut state = None; | ||
| let outcome = self | ||
| .inner | ||
| @@ -532,7 +539,6 @@ where | ||
| other => other, | ||
| }; | ||
| tracing::Span::current().record("duration_ms", _start.elapsed().as_millis() as u64); | ||
| result | ||
| } | ||
| } | ||
| @@ -904,6 +910,39 @@ mod tests { | ||
| } | ||
| } | ||
| #[test] | ||
| fn validate_evnode_span_has_expected_fields() { | ||
| use crate::test_utils::SpanCollector; | ||
| let collector = SpanCollector::new(); | ||
| let _guard = collector.as_default(); | ||
| let validator = create_test_validator(None); | ||
| let gas_limit = 21_000u64; | ||
| let max_fee_per_gas = 1_000_000_000u128; | ||
| let signed_tx = create_non_sponsored_evnode_tx(gas_limit, max_fee_per_gas); | ||
| let signer = Address::random(); | ||
| let pooled = create_pooled_tx(signed_tx, signer); | ||
| let sender_balance = *pooled.cost() + U256::from(1); | ||
| let mut state: Option<Box<dyn AccountInfoReader + Send>> = None; | ||
| let _ = validator.validate_evnode(&pooled, sender_balance, &mut state); | ||
| let span = collector | ||
| .find_span("validate_evnode") | ||
| .expect("validate_evnode span should be recorded"); | ||
| assert!(span.has_field("tx_hash"), "span missing tx_hash field"); | ||
| assert!(span.has_field("is_evnode"), "span missing is_evnode field"); | ||
| assert!( | ||
| span.has_field("duration_ms"), | ||
| "span missing duration_ms field" | ||
| ); | ||
| } | ||
| #[test] | ||
| fn evnode_create_allowed_when_allowlist_is_none() { | ||
| let validator = create_test_validator(None); | ||
Oops, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.