Skip to content

Conversation

@mducroux
Copy link
Contributor

@mducroux mducroux commented Nov 28, 2025

DEFI-2494

The following commit introduced an unexpected breaking change on the health_status endpoint: 2e9d892 . This is because new Dogecoin providers were added to the bitcoin_block_api enum.

This PR reverts the addition of Dogecoin providers in the bitcoin_block_api enum and introduces a new health_status_v2 endpoint to the canister which enabled adding new explorers in the future without introducing breaking changes to the health_status_v2 endpoint.

This PR ensures that no breaking changes are introduced to the health_status endpoint compared to the version of the Watchdog canister that is currently running in production.

However, this PR introduces a breaking change in the config endpoint by changing the type of the explorer field from bitcoin_block_api to text, which is acceptable since it is a debug endpoint.

@github-actions
Copy link

github-actions bot commented Nov 28, 2025

canbench 🏋 (dir: .) f50de49 2025-11-28 13:41:02 UTC

./canbench_results.yml is up to date
📦 canbench_results_benchmark.csv available in artifacts

~/work/bitcoin-canister/bitcoin-canister/scripts ~/work/bitcoin-canister/bitcoin-canister
~/work/bitcoin-canister/bitcoin-canister
---------------------------------------------------

Benchmark: insert_300_blocks
  total:
    instructions: 418.06 M (0.01%) (change within noise threshold)
    heap_increase: 12 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate (scope):
    calls: 300 (no change)
    instructions: 368.06 M (0.00%) (change within noise threshold)
    heap_increase: 3 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_block (scope):
    calls: 300 (no change)
    instructions: 18.30 M (0.00%) (change within noise threshold)
    heap_increase: 1 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_block/check_merkle_root (scope):
    calls: 300 (no change)
    instructions: 8.00 M (no change)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_block/ensure_unique_transactions (scope):
    calls: 300 (no change)
    instructions: 8.47 M (0.00%) (change within noise threshold)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_header (scope):
    calls: 300 (no change)
    instructions: 348.64 M (0.00%) (change within noise threshold)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

---------------------------------------------------

Benchmark: get_metrics
  total:
    instructions: 8.20 M (0.96%) (change within noise threshold)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

---------------------------------------------------

Benchmark: insert_block_headers
  total:
    instructions: 2.85 B (0.00%) (change within noise threshold)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_header (scope):
    calls: 100 (no change)
    instructions: 2.81 B (0.00%) (change within noise threshold)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

---------------------------------------------------

Benchmark: insert_block_headers_multiple_times
  total:
    instructions: 10.30 B (0.00%) (change within noise threshold)
    heap_increase: 7 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_header (scope):
    calls: 1000 (no change)
    instructions: 8.99 B (0.00%) (change within noise threshold)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

---------------------------------------------------

Benchmark: insert_block_with_10k_transactions
  total:
    instructions: 1.38 B (0.08%) (change within noise threshold)
    heap_increase: 73 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate (scope):
    calls: 1 (no change)
    instructions: 149.61 M (0.00%) (change within noise threshold)
    heap_increase: 20 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_block (scope):
    calls: 1 (no change)
    instructions: 149.50 M (no change)
    heap_increase: 20 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_block/check_merkle_root (scope):
    calls: 1 (no change)
    instructions: 70.70 M (no change)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_block/ensure_unique_transactions (scope):
    calls: 1 (no change)
    instructions: 78.80 M (no change)
    heap_increase: 20 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_header (scope):
    calls: 1 (no change)
    instructions: 102.96 K (0.00%) (change within noise threshold)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

---------------------------------------------------

Benchmark: insert_block_with_1k_transactions
  total:
    instructions: 114.35 M (0.09%) (change within noise threshold)
    heap_increase: 7 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate (scope):
    calls: 1 (no change)
    instructions: 15.14 M (0.00%) (change within noise threshold)
    heap_increase: 2 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_block (scope):
    calls: 1 (no change)
    instructions: 15.03 M (no change)
    heap_increase: 2 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_block/check_merkle_root (scope):
    calls: 1 (no change)
    instructions: 7.12 M (no change)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_block/ensure_unique_transactions (scope):
    calls: 1 (no change)
    instructions: 7.91 M (no change)
    heap_increase: 2 pages (no change)
    stable_memory_increase: 0 pages (no change)

  validate_header (scope):
    calls: 1 (no change)
    instructions: 102.96 K (0.00%) (change within noise threshold)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

---------------------------------------------------

Benchmark: pre_upgrade_with_many_unstable_blocks
  total:
    instructions: 5.36 B (-0.18%) (change within noise threshold)
    heap_increase: 4088 pages (no change)
    stable_memory_increase: 1792 pages (no change)

  serialize_blocktree_flatten (scope):
    calls: 1 (no change)
    instructions: 188.08 K (1.62%) (change within noise threshold)
    heap_increase: 0 pages (no change)
    stable_memory_increase: 0 pages (no change)

  serialize_blocktree_serialize_seq (scope):
    calls: 1 (no change)
    instructions: 1.93 B (-0.56%) (change within noise threshold)
    heap_increase: 2039 pages (no change)
    stable_memory_increase: 0 pages (no change)

---------------------------------------------------

Summary:
  instructions:
    status:   No significant changes 👍
    counts:   [total 7 | regressed 0 | improved 0 | new 0 | unchanged 7]
    change:   [max +1.04M | p75 +91.01K | median +23.84K | p25 +548 | min -9.57M]
    change %: [max +0.96% | p75 +0.08% | median 0.01% | p25 0.00% | min -0.18%]

  heap_increase:
    status:   No significant changes 👍
    counts:   [total 7 | regressed 0 | improved 0 | new 0 | unchanged 7]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min 0]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min 0.00%]

  stable_memory_increase:
    status:   No significant changes 👍
    counts:   [total 7 | regressed 0 | improved 0 | new 0 | unchanged 7]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min 0]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min 0.00%]

---------------------------------------------------
CSV results saved to canbench_results.csv

@mducroux mducroux changed the title introduce health_status_v2 candid query feat(watchdog): add health_status_v2 endpoint Nov 28, 2025
@mducroux mducroux added the CI_OVERRIDE_DIDC_CHECK Used to skip candid compatibility check label Nov 28, 2025
@mducroux mducroux changed the title feat(watchdog): add health_status_v2 endpoint feat(watchdog)!: add health_status_v2 endpoint Nov 28, 2025
@mducroux mducroux changed the title feat(watchdog)!: add health_status_v2 endpoint feat(watchdog)!: add health_status_v2 endpoint Nov 28, 2025
@mducroux mducroux marked this pull request as ready for review November 28, 2025 13:39
@mducroux mducroux requested a review from a team as a code owner November 28, 2025 13:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI_OVERRIDE_DIDC_CHECK Used to skip candid compatibility check

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant