mirror of
https://github.com/logos-blockchain/logos-execution-zone.git
synced 2026-08-05 12:33:15 +00:00
feat(sequencer): add status label to transaction application time
This commit is contained in:
parent
69ecc116a8
commit
218955dd19
@ -26,6 +26,14 @@ pub enum TxKind {
|
||||
ProgramDeployment,
|
||||
}
|
||||
|
||||
/// Whether applying a transaction to the block's working state succeeded.
|
||||
#[derive(Debug, Clone, Copy, strum::IntoStaticStr, strum::EnumIter)]
|
||||
#[strum(serialize_all = "snake_case")]
|
||||
pub enum ApplyStatus {
|
||||
Applied,
|
||||
Failed,
|
||||
}
|
||||
|
||||
impl From<common::transaction::TxKind> for TxKind {
|
||||
fn from(kind: common::transaction::TxKind) -> Self {
|
||||
match kind {
|
||||
@ -47,7 +55,11 @@ pub fn init() {
|
||||
drop(transactions_per_block_histogram());
|
||||
for origin in TransactionOrigin::iter() {
|
||||
for kind in TxKind::iter() {
|
||||
drop(mempool_transaction_application_time_histogram(origin, kind));
|
||||
for status in ApplyStatus::iter() {
|
||||
drop(mempool_transaction_application_time_histogram(
|
||||
origin, kind, status,
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -107,6 +119,7 @@ pub fn record_mempool_max_size(size: usize) {
|
||||
fn mempool_transaction_application_time_histogram(
|
||||
origin: TransactionOrigin,
|
||||
kind: TxKind,
|
||||
status: ApplyStatus,
|
||||
) -> Histogram {
|
||||
histogram!(
|
||||
description: "Time taken to apply a mempool transaction",
|
||||
@ -114,15 +127,18 @@ fn mempool_transaction_application_time_histogram(
|
||||
names::MEMPOOL_TRANSACTION_APPLICATION_TIME,
|
||||
"origin" => <&'static str>::from(origin),
|
||||
"kind" => <&'static str>::from(kind),
|
||||
"status" => <&'static str>::from(status),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn record_mempool_transaction_application_time(
|
||||
origin: TransactionOrigin,
|
||||
kind: TxKind,
|
||||
status: ApplyStatus,
|
||||
duration: Duration,
|
||||
) {
|
||||
mempool_transaction_application_time_histogram(origin, kind).record(duration.as_secs_f64());
|
||||
mempool_transaction_application_time_histogram(origin, kind, status)
|
||||
.record(duration.as_secs_f64());
|
||||
}
|
||||
|
||||
fn transactions_per_block_histogram() -> Histogram {
|
||||
|
||||
@ -902,16 +902,22 @@ impl<BP: BlockPublisherTrait> SequencerCore<BP> {
|
||||
new_block_timestamp,
|
||||
&mut withdrawals,
|
||||
);
|
||||
sequencer_core_metrics::record_mempool_transaction_application_time(
|
||||
origin.into(),
|
||||
tx.kind().into(),
|
||||
before_tx_apply.elapsed(),
|
||||
);
|
||||
|
||||
if applied {
|
||||
sequencer_core_metrics::record_mempool_transaction_application_time(
|
||||
origin.into(),
|
||||
tx.kind().into(),
|
||||
sequencer_core_metrics::ApplyStatus::Applied,
|
||||
before_tx_apply.elapsed(),
|
||||
);
|
||||
valid_transactions.push(tx);
|
||||
} else {
|
||||
sequencer_core_metrics::increment_mempool_failed_transactions_total();
|
||||
sequencer_core_metrics::record_mempool_transaction_application_time(
|
||||
origin.into(),
|
||||
tx.kind().into(),
|
||||
sequencer_core_metrics::ApplyStatus::Failed,
|
||||
before_tx_apply.elapsed(),
|
||||
);
|
||||
// A failed transaction is simply left out of the block, except a
|
||||
// dispatch: that one is re-fed from the store every turn, so one
|
||||
// that can never execute would fail on every block for ever.
|
||||
|
||||
@ -131,8 +131,8 @@
|
||||
"targets": [
|
||||
{
|
||||
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
||||
"expr": "histogram_quantile(${percentile}, sum by (le, kind, origin) (rate(mempool_transaction_application_time_seconds_bucket[$__rate_interval])))",
|
||||
"legendFormat": "{{kind}} · {{origin}}",
|
||||
"expr": "histogram_quantile(${percentile}, sum by (le, kind, origin, status) (rate(mempool_transaction_application_time_seconds_bucket[$__rate_interval])))",
|
||||
"legendFormat": "{{kind}} · {{origin}} · {{status}}",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
|
||||
@ -75,8 +75,8 @@ pub fn dashboard() -> Dashboard {
|
||||
.unit(Unit::Seconds)
|
||||
.target(selected_percentile(
|
||||
sequencer_core_metrics::names::MEMPOOL_TRANSACTION_APPLICATION_TIME,
|
||||
&["kind", "origin"],
|
||||
"{{kind}} · {{origin}}",
|
||||
&["kind", "origin", "status"],
|
||||
"{{kind}} · {{origin}} · {{status}}",
|
||||
)),
|
||||
Panel::timeseries("Transactions per block")
|
||||
.width(12)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user