A crash-looping ingester is invisible
Maintainer thường phản hồi trong vòng 1 ngày
@Notdayo đang làm issue này rồi.
Từ ngày 16/10/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Background
src/index.ts restarts a crashed ingester like this:
const restartIngester = (name: string, network: NetworkName, fn: () => Promise<void>) => {
fn().catch(err => {
console.error(`[lens] ${name}/${network} ingester crashed, restarting in 10s:`, err.message)
setTimeout(() => restartIngester(name, network, fn), 10_000)
})
}
The fault isolation is good and the comment above it explains the design well.
What is missing is any awareness of how often this happens. An ingester that
crashes immediately on start will restart every ten seconds forever. There is no
backoff, no cap, no metric, and /status does not mention it — so the service
reports itself healthy while one venue has produced nothing for a week.
What to build
- Exponential backoff with a ceiling, instead of a flat ten seconds.
- A counter metric of restarts, labelled by ingester name and network, exported
through the existingprom-clientregistry insrc/metrics.ts. - A record of the last crash — time and message — per
(ingester, network), so
L167 can surface it on/status. - Reset the backoff once an ingester has run healthily for some period, so a
nightly blip does not permanently slow restarts.
Acceptance criteria
- Restart delay grows on repeated failure and is capped
- Backoff resets after a sustained healthy run
- A Prometheus counter exposes restarts per ingester and network
- Last crash time and message are retrievable per ingester
- The existing fault isolation is preserved — one venue crashing still cannot affect another
Drips Wave · Complexity: Intermediate · 150 points
Repo: Divinity-Labs/Lens. Node + TypeScript, Fastify, Prisma on Postgres,
Redis for queues, Prometheus via prom-client.
Run the tests: npm test. The tests are vitest, not jest. Running jest
against this repo reports "66 suites, 0 tests" and means nothing. A single file
is npx vitest run src/__tests__/yourfile.test.ts.
Load test (prices) is already failing on main and has been for some
time. It is not your PR that broke it. Every other check should be green.
This service prices real assets on Stellar mainnet. A number that is wrong
is worse than a number that is missing, because a caller cannot tell the
difference. Prefer failing loudly over returning a plausible value.
Never elide an address, a contract id or a key in code, a comment or a test
fixture. A previous batch wrote a shortened contract id in an issue text and
five contributors invented plausible-looking ids to fill the gap. Write the
whole thing or do not write it at all.
The house pattern for an outbound deadline already exists — see
src/alerts/delivery.ts, which passes signal: AbortSignal.timeout(10_000) to
fetch. Where an issue below asks for a timeout, copy that, do not invent a
second convention.
Required: Before submitting, join the contributor Telegram so your work can be tracked and counted toward the Stellar Wave: https://t.me/+fxHXq8f1SwlkZDBk
- Ngôn ngữ chính
- TypeScript
- Star
- 4
- Fork
- 71
- Merge trung bình
- 1 ngày 9 giờ
- Pull request đã merge (30 ngày)
- 46
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Divinity-Labs/Lens
-
Webhook retries have no jitter, so failures synchroniseCó thể đã có người làm @Richard-tobi đã nhận 2 ngày trước. Đang mởarea:reliability difficulty:easy help wanted points:100 Stellar Wave
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 80/100
Divinity-Labs/Lens#341 · 2 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:security help wanted
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
Divinity-Labs/Lens#515 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:security difficulty:easy help wanted points:100
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 58/100
Divinity-Labs/Lens#514 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:api-quality difficulty:intermediate help wanted points:150
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
Divinity-Labs/Lens#513 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
The key is accepted only as a bearer token, and nothing says soCó thể đã có người làm @krsnak đã nhận 1 ngày trước. Đang mởarea:docs difficulty:easy help wanted points:100 Stellar Wave
Divinity-Labs/Lens#512 · 3 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Divinity-Labs/Lens
Issue tương tự
-
[测试] 等待仓库加载后再记录多仓库排序基线Có thể đã có người làm @myot233 đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
area:arcade p3-medium ready-for-agent testing type:docs
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
fderuiter/deruiter.dev#2369 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:devenv origin:agent type:bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
overengineeringstudio/effect-utils#1949 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
ccch1mneyyy/dsh-TUI#1631 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
MiniMax-AI/minimax-code#507 ·
Maintainer thường phản hồi trong vòng 1 ngày