Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ before 1.0).

- **Workspace version 0.6.99:** in-tree toward 0.7.0.
Published GitHub Releases remain 0.6.0; `v0.6.x` is the patch branch.
- **`ibd: perf` / `ibd: sizes` drop never-written meters:** DEBUG no longer
prints `recon`/`wire`/`resolve`, `parent_io`, `miss_p`, `cold_idx`,
`tip_gc`, `recent_pub`, annotate `pread=`, `spend_mix i=/skip=`,

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tip_gc is only dropped from ibd: perf write=. It is still printed as tip_gc={}ms in the ibd: confirm write slow … INFO line (crates/rbitcoin-net/src/ibd/confirm/mod.rs:1465-1475), fed by post_commit's hard-coded let tip_gc_ns = 0u64; (confirm_run/phases.rs:352) through LastWritePhases.tip_gc_ns / LAST_WRITE_TIP_GC_NS. Delete that plumbing in this PR so the entry is true.

`pstore`, or always-zero heap `recent=` occupancy. Slow-batch INFO
`ibd: confirm write slow` also drops `tip_gc=` (write no longer GCs
header plans). Live lookup / load / scripts / write stage tokens stay.
`write=` is Class A + ensure + structural + class_c + SH + spend +
tweaks + pins + head_sub + drain_join + dequeue.

## [0.6.0] — 2026-09-08

Expand Down
2 changes: 1 addition & 1 deletion OPERATOR.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ Requires **tip mode** (`node: catch-up complete … tip tracking`). During IBD u
| `ibd: progress` | INFO | Tip rate, `loadq`/`scriptq`/`writeq`, `txs=` (Class A / `tx.idx` count), horizon, tip ETA, **`bq soft=n/win RAM=`** (in-RAM body queue; soft densify: under ~100 MiB free ahead, over that only ~1 min confirm window, at/over 1 GiB assign-stop holes within that window and not past fetched_hi) |
| `ibd: perf` | DEBUG | Inflight + **`bq soft= RAM=`**; **`load=`** is pin+assemble only. **`load_thr pack/stamp/pin/asm/prune`** is the load OS thread. **`stamp=`** nests **`pack=`** (plan HashMap) vs **`head=`** (leftover TipOnly; IBD skeleton keeps this ~0). **`script=`** is verify ns (`jobs=` / `skip=`); recv/send are wait. **`pin_txid=`** is skeleton hits vs leftover `tx.head` |
| `ibd: sizes` | DEBUG | RSS + work path + **`bq soft=` / `RAM=`** + **conf_plans** + confirm pipe |
| `ibd: perf_dbg` | DEBUG | µs/blk load/write, pin/edge detail, **plan_batch** (`us/pin_txid` vs `probe/idx/body us/key`) + **class_a commit** |
| `ibd: perf_dbg` | DEBUG | µs/blk load/write, pin detail, **plan_batch** (`us/pin_txid` vs `probe/idx/body us/key`) + **class_a commit** |

Default INFO is `ibd: progress` only. `--log-level debug` adds perf / sizes / perf_dbg from the same sample. Ghost columns from deleted paths (wave-fill stubs, Direct SH head RMW) are omitted from both formatters. Pipeline roles: [`docs/concurrency.md`](docs/concurrency.md). Head files: [`docs/heads.md`](docs/heads.md).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1334,7 +1334,7 @@ fn assemble_pending_creates_is_txid_map_and_meters_flush() {
.expect("coinbase-only assemble");
assert_eq!(creates.len(), 1, "one create fk per tx, not per vout");
assert_eq!(creates.get(&tids[0]), Some(&Fk(1)));
let (in_n, _bns, batch_n, _sns, same_n, ..) =
let (in_n, batch_n, same_n, ..) =
confirm_phase_stats::sample_assemble_prevout_detail_and_reset();
assert_eq!(in_n, 0, "coinbase has no prevouts");
assert_eq!(batch_n, 0);
Expand Down
10 changes: 3 additions & 7 deletions crates/rbitcoin-consensus/src/confirm_run/phases.rs
Original file line number Diff line number Diff line change
Expand Up @@ -308,13 +308,13 @@ pub(super) fn class_c_commit(
Ok(out)
}

/// Returns `(spend_ann_ns, tip_gc_ns)` measured with local `Instant`s.
/// Returns spend-annotate wall ns measured with a local `Instant`.
///
/// Pure-write annotate from structural abs+meta jobs (no pin `get_spender_abs`).
pub(super) fn post_commit(
query: &Query,
annotate: &[crate::block::SpendAnnotateJob],
) -> Result<(u64, u64), ConsensusError> {
) -> Result<u64, ConsensusError> {
let t_spent = Instant::now();
if query.spend_index_enabled() && !annotate.is_empty() {
let mut abs_edges: Vec<(u64, rbitcoin_primitives::Fk, u32, rbitcoin_primitives::Fk)> =
Expand Down Expand Up @@ -346,11 +346,7 @@ pub(super) fn post_commit(
}
let spend_ann_ns = t_spent.elapsed().as_nanos() as u64;
confirm_phase_stats::UTXO_APPLY_NS.fetch_add(spend_ann_ns, Ordering::Relaxed);

// Header-cache GC is load-owned (polls store tip each pack). Write does
// not lock ConfirmParentCache.
let tip_gc_ns = 0u64;
Ok((spend_ann_ns, tip_gc_ns))
Ok(spend_ann_ns)
}

pub(super) fn check_bip34(block: &Block, height: u32) -> Result<(), ConsensusError> {
Expand Down
6 changes: 2 additions & 4 deletions crates/rbitcoin-consensus/src/confirm_run/write.rs
Original file line number Diff line number Diff line change
Expand Up @@ -237,15 +237,14 @@ pub fn confirm_write_phase(
.fetch_add(class_c_join_ns, Ordering::Relaxed);
}

let (spend_ann_ns, tip_gc_ns) = post_commit(query, &annotate)?;
let spend_ann_ns = post_commit(query, &annotate)?;
Ok((
out,
n_blocks,
structural_ns,
struct_ph,
class_c_ns,
spend_ann_ns,
tip_gc_ns,
))
})();

Expand All @@ -255,7 +254,7 @@ pub fn confirm_write_phase(
if drain_join_ns > 0 {
confirm_phase_stats::WRITE_DRAIN_JOIN_NS.fetch_add(drain_join_ns, Ordering::Relaxed);
}
let (out, n_blocks, structural_ns, struct_ph, class_c_ns, spend_ann_ns, tip_gc_ns) = overlap?;
let (out, n_blocks, structural_ns, struct_ph, class_c_ns, spend_ann_ns) = overlap?;
drain_res.map_err(ConsensusError::from)?;
if let Some(fk) = drain_max_fk {
query.note_head_drain_fk(fk);
Expand Down Expand Up @@ -291,7 +290,6 @@ pub fn confirm_write_phase(
bip68_ns: struct_ph.bip68_ns,
class_c_ns,
spend_ann_ns,
tip_gc_ns,
tweak_ns,
});
Ok(out)
Expand Down
108 changes: 10 additions & 98 deletions crates/rbitcoin-consensus/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,6 @@ use rbitcoin_store::HeaderRecord;
/// IBD diagnostics: wall time spent in each phase (nanoseconds; reset by the sampler).
pub mod confirm_phase_stats {
use std::sync::atomic::{AtomicU64, Ordering};
/// Total reconstruct-ish wall (wire rebuild; historical total).
pub static RECONSTRUCT_NS: AtomicU64 = AtomicU64::new(0);
/// Full wire `Block` rebuild from Class A rows.
pub static RECONSTRUCT_WIRE_NS: AtomicU64 = AtomicU64::new(0);
/// Optimistic assemble (prevout content + jobs; no durable spentness).
pub static CONNECT_NS: AtomicU64 = AtomicU64::new(0);
pub static SCRIPT_NS: AtomicU64 = AtomicU64::new(0);
Expand Down Expand Up @@ -135,12 +131,6 @@ pub mod confirm_phase_stats {
pub static TWEAK_NS: AtomicU64 = AtomicU64::new(0);
/// Write-stage denserels/abs ensure after Class A (fill planned + ensure spends).
pub static ENSURE_LAYOUT_NS: AtomicU64 = AtomicU64::new(0);
/// Write-stage RecentCreates note+expire+one snapshot publish.
pub static WRITE_RECENT_NS: AtomicU64 = AtomicU64::new(0);
/// `tx_body_range_batch` inside that publish.
pub static WRITE_RECENT_IDX_NS: AtomicU64 = AtomicU64::new(0);
/// `publish_if_dirty` clone inside that publish.
pub static WRITE_RECENT_CLONE_NS: AtomicU64 = AtomicU64::new(0);
/// `class_c_commit` wall minus tables (`flush` / SH join).
pub static WRITE_CLASS_C_JOIN_NS: AtomicU64 = AtomicU64::new(0);
/// Residual wait on `head_insert_queued` join after Class C / annotate.
Expand All @@ -164,15 +154,9 @@ pub mod confirm_phase_stats {
pub static ASM_JOB_NS: AtomicU64 = AtomicU64::new(0);
/// Non-coinbase inputs resolved in `resolve_prevout` (for us/in).
pub static ASM_IN_N: AtomicU64 = AtomicU64::new(0);
/// Prevout path splits (ns + counts; sum of path ns ≈ ASM_PREVOUT_NS).
pub static ASM_PREV_BATCH_NS: AtomicU64 = AtomicU64::new(0);
pub static ASM_PREV_BATCH_N: AtomicU64 = AtomicU64::new(0);
pub static ASM_PREV_SAME_NS: AtomicU64 = AtomicU64::new(0);
pub static ASM_PREV_SAME_N: AtomicU64 = AtomicU64::new(0);
pub static ASM_PREV_COLD_NS: AtomicU64 = AtomicU64::new(0);
pub static ASM_PREV_COLD_N: AtomicU64 = AtomicU64::new(0);
/// Time in `tx_fk_by_txid` / durable head lookup on cold prevout path.
pub static ASM_PREV_FK_NS: AtomicU64 = AtomicU64::new(0);
/// Cold success with **no** `prev_fk_hint` (thin + pending + head miss at assemble).
pub static ASM_PREV_COLD_NULL_FK_N: AtomicU64 = AtomicU64::new(0);
/// Cold success: had fk, batch pin miss (pin did not cover parent/vout).
Expand All @@ -189,22 +173,14 @@ pub mod confirm_phase_stats {
/// Annotate edges via abs pin denserels (pure-write known meta).
/// Historical name: formerly also counted ranged body walks (removed on Direct write).
pub static SPEND_ANNOTATE_RANGED: AtomicU64 = AtomicU64::new(0);
/// Legacy cold idx annotate path (must stay 0 on Direct IBD after abs-only write).
pub static SPEND_ANNOTATE_IDX: AtomicU64 = AtomicU64::new(0);
/// Spends skipped (null create_fk or null spend_fk).
pub static SPEND_ANNOTATE_SKIP: AtomicU64 = AtomicU64::new(0);
/// Pure-write annotate wall (ns) / edge count (backend is uring or pwrite).
pub static SPEND_ANN_NS: AtomicU64 = AtomicU64::new(0);
pub static SPEND_ANN_N: AtomicU64 = AtomicU64::new(0);
/// Edges annotated without body pread (should equal all annotate edges).
pub static SPEND_ANN_PREAD_SKIP: AtomicU64 = AtomicU64::new(0);
/// Body preads on annotate (must stay 0 on pure-write write path).
pub static SPEND_ANN_PREAD: AtomicU64 = AtomicU64::new(0);
/// Structural spent meta bulk read wall (ns) / peek count.
pub static SPEND_META_NS: AtomicU64 = AtomicU64::new(0);
pub static SPEND_META_N: AtomicU64 = AtomicU64::new(0);
/// Header + body-fk resolve for the batch.
pub static RESOLVE_NS: AtomicU64 = AtomicU64::new(0);
/// Prep pre-assemble wall on the prep/load thread.
///
/// Wire path: structure + plan Class A + pin parents (stops before assemble).
Expand All @@ -220,10 +196,6 @@ pub mod confirm_phase_stats {
pub static PREP_PREPARE_NS: AtomicU64 = AtomicU64::new(0);
/// Wire load sub: filter need + plan batch + meta/tx_fks wiring (not pin).
pub static PREP_FILTER_PLAN_NS: AtomicU64 = AtomicU64::new(0);
/// Unpin spent outs from ConfirmParentCache after Class C.
pub static UNPIN_NS: AtomicU64 = AtomicU64::new(0);
/// `advance_parent_cache_tip` (drop bodies / GC parents).
pub static CACHE_TIP_NS: AtomicU64 = AtomicU64::new(0);
pub static BLOCKS: AtomicU64 = AtomicU64::new(0);

static LAST_WRITE_N: AtomicU64 = AtomicU64::new(0);
Expand All @@ -235,7 +207,6 @@ pub mod confirm_phase_stats {
static LAST_WRITE_BIP68_NS: AtomicU64 = AtomicU64::new(0);
static LAST_WRITE_CLASS_C_NS: AtomicU64 = AtomicU64::new(0);
static LAST_WRITE_SPEND_ANN_NS: AtomicU64 = AtomicU64::new(0);
static LAST_WRITE_TIP_GC_NS: AtomicU64 = AtomicU64::new(0);
static LAST_WRITE_TWEAK_NS: AtomicU64 = AtomicU64::new(0);
static LAST_WRITE_WALL_NS: AtomicU64 = AtomicU64::new(0);

Expand All @@ -254,7 +225,6 @@ pub mod confirm_phase_stats {
pub bip68_ns: u64,
pub class_c_ns: u64,
pub spend_ann_ns: u64,
pub tip_gc_ns: u64,
/// BIP-352 thin tweak index (`index_sp_tweaks_batch`) after annotate.
pub tweak_ns: u64,
}
Expand All @@ -278,7 +248,6 @@ pub mod confirm_phase_stats {
LAST_WRITE_BIP68_NS.store(p.bip68_ns, Ordering::Relaxed);
LAST_WRITE_CLASS_C_NS.store(p.class_c_ns, Ordering::Relaxed);
LAST_WRITE_SPEND_ANN_NS.store(p.spend_ann_ns, Ordering::Relaxed);
LAST_WRITE_TIP_GC_NS.store(p.tip_gc_ns, Ordering::Relaxed);
LAST_WRITE_TWEAK_NS.store(p.tweak_ns, Ordering::Relaxed);
}

Expand All @@ -294,7 +263,6 @@ pub mod confirm_phase_stats {
bip68_ns: LAST_WRITE_BIP68_NS.load(Ordering::Relaxed),
class_c_ns: LAST_WRITE_CLASS_C_NS.load(Ordering::Relaxed),
spend_ann_ns: LAST_WRITE_SPEND_ANN_NS.load(Ordering::Relaxed),
tip_gc_ns: LAST_WRITE_TIP_GC_NS.load(Ordering::Relaxed),
tweak_ns: LAST_WRITE_TWEAK_NS.load(Ordering::Relaxed),
}
}
Expand Down Expand Up @@ -322,21 +290,6 @@ pub mod confirm_phase_stats {
)
}

/// Sample and reset write-stage RecentCreates publish wall.
#[inline]
pub fn sample_write_recent_and_reset() -> u64 {
WRITE_RECENT_NS.swap(0, Ordering::Relaxed)
}

/// `(idx, clone)` parts of RecentCreates publish.
#[inline]
pub fn sample_write_recent_parts_and_reset() -> (u64, u64) {
(
WRITE_RECENT_IDX_NS.swap(0, Ordering::Relaxed),
WRITE_RECENT_CLONE_NS.swap(0, Ordering::Relaxed),
)
}

/// `(drain_join, dequeue)` residual write walls.
#[inline]
pub fn sample_write_residuals_and_reset() -> (u64, u64) {
Expand Down Expand Up @@ -388,20 +341,14 @@ pub mod confirm_phase_stats {
)
}

/// Prevout path detail: `(in_n, batch_ns, batch_n, same_ns, same_n,
/// cold_ns, cold_n, fk_ns)`.
/// Prevout path counts: `(in_n, batch_n, same_n, cold_n)`.
#[inline]
#[allow(clippy::type_complexity)]
pub fn sample_assemble_prevout_detail_and_reset() -> (u64, u64, u64, u64, u64, u64, u64, u64) {
pub fn sample_assemble_prevout_detail_and_reset() -> (u64, u64, u64, u64) {
(
ASM_IN_N.swap(0, Ordering::Relaxed),
ASM_PREV_BATCH_NS.swap(0, Ordering::Relaxed),
ASM_PREV_BATCH_N.swap(0, Ordering::Relaxed),
ASM_PREV_SAME_NS.swap(0, Ordering::Relaxed),
ASM_PREV_SAME_N.swap(0, Ordering::Relaxed),
ASM_PREV_COLD_NS.swap(0, Ordering::Relaxed),
ASM_PREV_COLD_N.swap(0, Ordering::Relaxed),
ASM_PREV_FK_NS.swap(0, Ordering::Relaxed),
)
}

Expand Down Expand Up @@ -505,14 +452,12 @@ pub mod confirm_phase_stats {
/// Sample and reset all confirm phases.
///
/// Returns
/// `(recon, wire, connect, script, class_c, strong, scripthash, tip,
/// utxo_apply, blocks, resolve, load, unpin, cache_tip,
/// spend_ranged, spend_idx, spend_skip, structural, structural_spent,
/// structural_create_h, structural_bip68)`.
/// `(connect, script, class_c, strong, scripthash, tip, utxo_apply, blocks,
/// load, spend_ranged, structural, structural_spent, structural_create_h,
/// structural_bip68)`.
/// `class_c` is **strong+tip tables only** (not SH join wall; SH is
/// `scripthash`). `strong` / `scripthash` / `tip` come from
/// [`rbitcoin_query::class_c_phase_stats`].
/// `recon` prefers wire sub-timer, else legacy total.
/// `connect` is **load assemble**, not write structural — see `structural`.
#[allow(clippy::type_complexity)]
pub fn sample_and_reset() -> (
Expand All @@ -530,21 +475,9 @@ pub mod confirm_phase_stats {
u64,
u64,
u64,
u64,
u64,
u64,
u64,
u64,
u64,
u64,
) {
let (strong, sh, tip) = rbitcoin_query::class_c_phase_stats::sample_and_reset();
let wire = RECONSTRUCT_WIRE_NS.swap(0, Ordering::Relaxed);
let recon_total = RECONSTRUCT_NS.swap(0, Ordering::Relaxed);
let recon = if wire > 0 { wire } else { recon_total };
(
recon,
wire,
CONNECT_NS.swap(0, Ordering::Relaxed),
SCRIPT_NS.swap(0, Ordering::Relaxed),
CLASS_C_NS.swap(0, Ordering::Relaxed),
Expand All @@ -553,13 +486,8 @@ pub mod confirm_phase_stats {
tip,
UTXO_APPLY_NS.swap(0, Ordering::Relaxed),
BLOCKS.swap(0, Ordering::Relaxed),
RESOLVE_NS.swap(0, Ordering::Relaxed),
LOAD_NS.swap(0, Ordering::Relaxed),
UNPIN_NS.swap(0, Ordering::Relaxed),
CACHE_TIP_NS.swap(0, Ordering::Relaxed),
SPEND_ANNOTATE_RANGED.swap(0, Ordering::Relaxed),
SPEND_ANNOTATE_IDX.swap(0, Ordering::Relaxed),
SPEND_ANNOTATE_SKIP.swap(0, Ordering::Relaxed),
STRUCTURAL_NS.swap(0, Ordering::Relaxed),
STRUCTURAL_SPENT_NS.swap(0, Ordering::Relaxed),
STRUCTURAL_CREATE_H_NS.swap(0, Ordering::Relaxed),
Expand All @@ -576,14 +504,13 @@ pub mod confirm_phase_stats {
)
}

/// Pure-write annotate: (ann_ns, ann_n, pread_skip, pread).
/// Pure-write annotate: (ann_ns, ann_n, pread_skip).
#[inline]
pub fn sample_spend_ann_and_reset() -> (u64, u64, u64, u64) {
pub fn sample_spend_ann_and_reset() -> (u64, u64, u64) {
(
SPEND_ANN_NS.swap(0, Ordering::Relaxed),
SPEND_ANN_N.swap(0, Ordering::Relaxed),
SPEND_ANN_PREAD_SKIP.swap(0, Ordering::Relaxed),
SPEND_ANN_PREAD.swap(0, Ordering::Relaxed),
)
}

Expand Down Expand Up @@ -896,7 +823,6 @@ mod coverage_tests {
bip68_ns: 50_000,
class_c_ns: 400_000,
spend_ann_ns: 300_000,
tip_gc_ns: 10_000,
tweak_ns: 2_500_000,
});
let p = last_write_phases();
Expand All @@ -914,29 +840,22 @@ mod coverage_tests {
WRITE_HEAD_SUB_NS.store(33, Ordering::Relaxed);
assert_eq!(sample_write_pins_and_reset(), (11, 22, 33));
assert_eq!(sample_write_pins_and_reset(), (0, 0, 0));
RECONSTRUCT_NS.store(5, Ordering::Relaxed);
RECONSTRUCT_WIRE_NS.store(7, Ordering::Relaxed);
CONNECT_NS.store(1, Ordering::Relaxed);
SCRIPT_NS.store(1, Ordering::Relaxed);
CLASS_C_NS.store(1, Ordering::Relaxed);
CLASS_A_NS.store(9, Ordering::Relaxed);
ENSURE_LAYOUT_NS.store(11, Ordering::Relaxed);
UTXO_APPLY_NS.store(1, Ordering::Relaxed);
BLOCKS.store(1, Ordering::Relaxed);
RESOLVE_NS.store(1, Ordering::Relaxed);
LOAD_NS.store(1, Ordering::Relaxed);
UNPIN_NS.store(1, Ordering::Relaxed);
CACHE_TIP_NS.store(1, Ordering::Relaxed);
SPEND_ANNOTATE_RANGED.store(1, Ordering::Relaxed);
SPEND_ANNOTATE_IDX.store(1, Ordering::Relaxed);
SPEND_ANNOTATE_SKIP.store(1, Ordering::Relaxed);
STRUCTURAL_NS.store(1, Ordering::Relaxed);
STRUCTURAL_SPENT_NS.store(1, Ordering::Relaxed);
STRUCTURAL_CREATE_H_NS.store(1, Ordering::Relaxed);
STRUCTURAL_BIP68_NS.store(1, Ordering::Relaxed);
let s = sample_and_reset();
assert_eq!(s.0, 7); // wire preferred over recon total
assert_eq!(s.1, 7);
assert_eq!(s.0, 1);
assert_eq!(s.1, 1);
let (ca, en) = sample_class_a_ensure_and_reset();
assert_eq!((ca, en), (9, 11));
// Drain prep residual (other tests may have accrued), then set known values.
Expand All @@ -957,17 +876,10 @@ mod coverage_tests {
// I3 assemble prevout path detail.
let _ = sample_assemble_prevout_detail_and_reset();
ASM_IN_N.store(100, Ordering::Relaxed);
ASM_PREV_BATCH_NS.store(1000, Ordering::Relaxed);
ASM_PREV_BATCH_N.store(80, Ordering::Relaxed);
ASM_PREV_SAME_NS.store(50, Ordering::Relaxed);
ASM_PREV_SAME_N.store(5, Ordering::Relaxed);
ASM_PREV_COLD_NS.store(300, Ordering::Relaxed);
ASM_PREV_COLD_N.store(5, Ordering::Relaxed);
ASM_PREV_FK_NS.store(40, Ordering::Relaxed);
assert_eq!(
sample_assemble_prevout_detail_and_reset(),
(100, 1000, 80, 50, 5, 300, 5, 40)
);
assert_eq!(sample_assemble_prevout_detail_and_reset(), (100, 80, 5, 5));
let _ = sample_assemble_cold_why_and_reset();
ASM_PREV_COLD_NULL_FK_N.store(1, Ordering::Relaxed);
ASM_PREV_COLD_NOT_PIN_N.store(2, Ordering::Relaxed);
Expand Down
7 changes: 0 additions & 7 deletions crates/rbitcoin-net/src/chain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2379,8 +2379,6 @@ pub fn format_tip_accept_sh_line(i: &TipAcceptShInput) -> String {
/// Sample meters after tip accept and emit INFO `tip: accept …` (SH breakdown).
fn log_tip_accept_sh(query: &Query, height: u32, n_tx: usize, wall_ns: u64, mp_strip_ns: u64) {
let (
_recon,
_wire,
connect_ns,
script_ns,
_class_c_ns,
Expand All @@ -2389,13 +2387,8 @@ fn log_tip_accept_sh(query: &Query, height: u32, n_tx: usize, wall_ns: u64, mp_s
tip_ns,
spend_ns,
_blks,
_resolve,
load_ns,
_unpin,
_cache_tip,
_spend_ranged,
_spend_idx,
_spend_skip,
structural_ns,
_struct_spent,
_struct_create_h,
Expand Down
Loading