Skip to content

Migrate submission queue from Kafka to Redis, fix round timer#151

Open
Youmanvi wants to merge 3 commits into
mainfrom
port-kafka-to-redis
Open

Migrate submission queue from Kafka to Redis, fix round timer#151
Youmanvi wants to merge 3 commits into
mainfrom
port-kafka-to-redis

Conversation

@Youmanvi

@Youmanvi Youmanvi commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Fixes the round timer bug where the countdown never started (the interval/cleanup logic was nested inside its own never-invoked function body) and normalizes the idle/running time format to MM:SS.
  • Finishes an in-progress Kafka→Redis migration for the submission queue: both central-service and worker-service now speak the same Redis-backed queue instead of only one side switching, which was silently breaking submission grading end-to-end.
  • Removes Kafka entirely: confluent-kafka-go, the standalone kafka-queue module, librdkafka Docker build steps, and all KAFKA_* env vars/services (broker, zookeeper) from docker-compose.
  • Queue uses a reliable-queue pattern (BLMOVE into a per-queue processing list, with Ack/Requeue/Recover) instead of plain BLPOP, so a crash mid-processing no longer silently drops a submission verdict.

Test plan

  • go build ./..., go vet ./..., go test ./... pass for central-service, worker-service, and rtc-service
  • worker-service also verified to build standalone with GOWORK=off (matches its Docker build context)
  • central-service/queue has new tests covering publish/consume/ack, empty-queue, requeue, and crash-recovery
  • Manual verification of the round timer in the extension UI
  • End-to-end submission flow against a real Redis instance (docker-compose up)

Both central-service and worker-service now speak the same Redis-backed
queue instead of central-service alone switching away from Kafka, which
was silently breaking the submission pipeline end-to-end. Drops Kafka
entirely: confluent-kafka-go, the standalone kafka-queue module,
librdkafka Docker build steps, and all KAFKA_* env vars/services.

The queue uses the reliable-queue pattern (BLMOVE into a per-queue
processing list, Ack/Requeue/Recover) instead of plain BLPOP, so a
crash mid-processing no longer silently drops a submission verdict.

Also fixes the round timer's idle/expired state rendering "00:00:00"
while the running state renders "MM:SS".
@vercel

vercel Bot commented Jul 22, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
bsg Ready Ready Preview, Comment Jul 22, 2026 4:35am

Request Review

@Eskan0r
Eskan0r self-requested a review July 25, 2026 03:22
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