evstack / evstack/apex

Rate limiting and circuit breaker for transaction submission

Aperta
#18 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Go
Stelle
4
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

## Summary

Add backpressure mechanisms to the transaction submission path to handle DA layer degradation gracefully.

Parent: #4

## Context

celestia-node has zero rate limiting or backpressure on submission — just a mutex serializing broadcasts. Under load or during network issues, this leads to unbounded retries and resource exhaustion.

## Requirements

### Concurrency limiter
- Semaphore bounding max in-flight transactions (configurable, default: 4)
- Callers block when limit is reached
- Works with multi-account (#5): limit is global across all accounts

### Exponential backoff
- On repeated submission failures, increase delay between attempts
- Base: 1s, max: 30s, jitter: +/- 25%
- Reset backoff on successful submission

### Circuit breaker
- Track failure rate over a sliding window (e.g., last 20 submissions)
- States: closed (normal) → open (failing, reject immediately) → half-open (probe)
- Open threshold: >50% failure rate over window
- Half-open: allow 1 submission, if success → closed, if fail → open
- When open: return immediate error with "circuit open" context, don't waste gas

### Metrics (#7)
- `apex_submission_inflight` (gauge)
- `apex_submission_circuit_state` (gauge — 0=closed, 1=half-open, 2=open)
- `apex_submission_backoff_seconds` (gauge)

```toml
[submission.rate_limit]
max_inflight = 4
backoff_base = "1s"
backoff_max = "30s"
circuit_window = 20
circuit_open_threshold = 0.5
```

## References

- Sony's gobreaker or similar for circuit breaker pattern

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia individuando il punto di ingresso per l'invio delle transazioni e esaminando l'issue principale #4 e le issue correlate #5 e #7; questa issue non indica file o test. Il lavoro è completato quando la limitazione globale configurabile della concorrenza, il backoff, le transizioni di stato del circuit breaker e le tre metriche specificate si comportano come descritto, inclusi i valori predefiniti TOML e gli errori immediati a circuito aperto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
go
Ambito
backend, distributed-systems
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.