Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Engine restart silently freezes extended-API shapes (clients tail dead streams)

Open
#4 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
postgresql, rust
Domain
api, backend, databases

Research direction

Start with the in-memory shape state in apps/engine/src/engine.rs:47-61 and compare the /v1/shape handling at apps/engine/src/electric.rs:661-664 with extended-API stream maintenance across restart. Trace boot and shutdown behavior first. Done means an extended-API client can detect an unmaintained stream, or shape state is persisted and maintenance resumes after boot, as selected by the recovery plan.

Written by the indexing model from the issue text.

Description

bug

Found during the production-readiness investigation.

Symptom / failure scenario: all shape state is in-memory (apps/engine/src/engine.rs:47-61); nothing re-registers shapes at boot. After an engine restart the shape/<id> streams still exist on the DS server, but no tailer maintains them — an extended-API client long-polling its feed keeps getting valid responses (historical data, then silence) while Postgres keeps changing. The shape is silently stale forever; no error is surfaced to the client, no detection exists server-side.

/v1/shape clients at least get a 409 must-refetch (apps/engine/src/electric.rs:661-664); extended-API clients get nothing.

Fix direction: short-term, make staleness detectable (e.g. engine epoch/generation stamped on streams or a control message on shutdown/boot so clients can detect an unmaintained feed). Real fix: persist the shape catalog and resume maintenance at boot (recovery epic).

🤖 Generated with Claude Code

Dominant language
Rust
Stars
31
Forks
7
PR merge metrics
No merged PRs in 30d

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from electric-sql/electric-circuits

All issues in electric-sql/electric-circuits

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.