Skip to content

fix(gecko): replace dead WBNB/BUSD pool with active USDT/WBNB V3 on BNB#920

Merged
Flotapponnier merged 1 commit into
devfrom
fix/gecko-bnb-pool
Jul 6, 2026
Merged

fix(gecko): replace dead WBNB/BUSD pool with active USDT/WBNB V3 on BNB#920
Flotapponnier merged 1 commit into
devfrom
fix/gecko-bnb-pool

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Symptom

Alertmanager fires geckoterminal head_lag stale on bnb every few hours across all 3 regions in staging and prod:

:warning: geckoterminal head_lag stale on bnb (sgp)
geckoterminal hasn't pushed a head_lag sample for bnb / sgp in over 5 minutes.

Root cause

The BNB pool configured across 3 harnesses uses PoolID: "24" which points to WBNB/BUSD PancakeSwap V2 — near-idle since Binance stopped issuing new BUSD in September 2024.

Staging-sgp log evidence (last 5000 lines):

  • gecko/bnb: 2 samples
  • gecko/base: 7 samples
  • gecko/solana: 1 sample

The 5-min sample-freshness rule in alert_rules.yml fires because the pool physically has fewer than 1 swap per 5 min.

Fix

Replace with PancakeSwap V3 USDT/WBNB 0.01% — currently the #1 BSC pool by 24h volume ($130M+).

  • Pool address: 0x172fcd41e0913e95784454622d1c3724f546f849
  • Internal GT pool_id: 160787671 (via app.geckoterminal.com/api/p1/bsc/pools/<address>)

Scope

Same fix applied to all 3 harnesses that hardcode the same pool list:

  • aggregator-head-lag (the one firing the alert)
  • aggregator-latency-benchmark
  • metadata-coverage

Test plan

  • go vet clean on the affected files
  • After deploy: staging-sgp logs show [HEAD-LAG][GECKO][*][bnb] samples arriving every 30-120 s instead of every 15-30 min
  • After deploy: alertmanager stops firing gecko_head_lag_stale{chain="bnb"}

Symptom: alertmanager fires 'geckoterminal head_lag stale on bnb'
every few hours across all 3 regions in both staging and prod
(observed 2026-07-06). Root cause: the BNB pool configured across
3 harnesses uses PoolID '24' which points to WBNB/BUSD
PancakeSwap V2 — near-idle since Binance stopped issuing BUSD in
2024. Staging-sgp logs show 2 gecko/bnb samples per 5000 log lines
vs 7 for base and 1 for solana; the sub-5min sample cadence the
head_lag rule expects is impossible on a dead pool.

Fix: replace with PancakeSwap V3 USDT/WBNB 0.01% fee tier,
currently the #1 BSC pool by volume ($130M+ 24h). Internal GT
pool_id = 160787671 (derived from
app.geckoterminal.com/api/p1/bsc/pools/0x172fcd41e0913e95784454622d1c3724f546f849).

Applied to all 3 harnesses that hardcode the same list:
- aggregator-head-lag   (fires the alert)
- aggregator-latency-benchmark
- metadata-coverage
@Flotapponnier
Flotapponnier merged commit 1fb251a into dev Jul 6, 2026
1 check passed
Flotapponnier added a commit that referenced this pull request Jul 6, 2026
… (#921)

Symptom: alertmanager fires 'geckoterminal head_lag stale on bnb'
every few hours across all 3 regions in both staging and prod
(observed 2026-07-06). Root cause: the BNB pool configured across
3 harnesses uses PoolID '24' which points to WBNB/BUSD
PancakeSwap V2 — near-idle since Binance stopped issuing BUSD in
2024. Staging-sgp logs show 2 gecko/bnb samples per 5000 log lines
vs 7 for base and 1 for solana; the sub-5min sample cadence the
head_lag rule expects is impossible on a dead pool.

Fix: replace with PancakeSwap V3 USDT/WBNB 0.01% fee tier,
currently the #1 BSC pool by volume ($130M+ 24h). Internal GT
pool_id = 160787671 (derived from
app.geckoterminal.com/api/p1/bsc/pools/0x172fcd41e0913e95784454622d1c3724f546f849).

Applied to all 3 harnesses that hardcode the same list:
- aggregator-head-lag   (fires the alert)
- aggregator-latency-benchmark
- metadata-coverage

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Flotapponnier added a commit that referenced this pull request Jul 6, 2026
Rename AggregatorHeadLagStale to MobulaHeadLagStale and filter the
expression on aggregator='mobula'. Non-Mobula aggregator health
(gecko, codex, ...) is tracked via log tailing, not paged. Operator
feedback 2026-07-06: 'on veut dans l'alerting seulement si ca concerne
mobula; le reste on sen fou'.

The rule previously fired every few hours on gecko/bnb because the
WBNB/BUSD pool went idle in 2024 (separate fix #920 replaces that
pool with WBNB/USDT V3), and periodically on codex due to WS
disconnects — both being third-party issues Mobula operators cannot
act on.

Prometheus alert_type label + severity stay identical so the
alertmanager routing / silencer rules keep working.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Flotapponnier added a commit that referenced this pull request Jul 6, 2026
Rename AggregatorHeadLagStale to MobulaHeadLagStale and filter the
expression on aggregator='mobula'. Non-Mobula aggregator health
(gecko, codex, ...) is tracked via log tailing, not paged. Operator
feedback 2026-07-06: 'on veut dans l'alerting seulement si ca concerne
mobula; le reste on sen fou'.

The rule previously fired every few hours on gecko/bnb because the
WBNB/BUSD pool went idle in 2024 (separate fix #920 replaces that
pool with WBNB/USDT V3), and periodically on codex due to WS
disconnects — both being third-party issues Mobula operators cannot
act on.

Prometheus alert_type label + severity stay identical so the
alertmanager routing / silencer rules keep working.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
@Flotapponnier
Flotapponnier deleted the fix/gecko-bnb-pool branch July 17, 2026 14:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant