Skip to content

First controller subscription skips task events published before startup #354

Open

Description

@fkautz

Problem

Subscribe creates a new Redis consumer group at $, the current stream tail. Tasks saved before the first controller subscription are skipped, and the controller has no startup scan to reconcile them.

Reproduction

Save before-start before creating the consumer group. Subscribe the first worker, then save after-start and read its first event.

Observed behavior

The first delivered event is after-start; before-start is skipped. The later event is a positive control showing the reader is functioning.

Expected behavior

Initial controller startup should reconcile already-persisted tasks, either by consuming the backlog or scanning existing records.

Executable regression test

TestReviewSubscriptionDeliversPreexistingTasks (includes fixture in the same file).

git clone --branch test/review-regressions https://github.com/fkautz/ax.git ax-review
cd ax-review
git checkout 1dc2613d29e12f306154a7e1183c1825a55d24ed
go test ./internal/store/redis -run '^TestReviewSubscriptionDeliversPreexistingTasks$' -count=1 -v

Requires the Go toolchain specified by go.mod and redis-server on PATH. The test asserts the desired behavior and fails on the published revision. Production code is unchanged.

The regression uses a real isolated redis-server over a private Unix socket. This concerns first creation of a consumer group; ordinary restarts with an existing group are a separate case.

Activity

  1. arbazkhan971 commented on Sep 22, 2026

    @arbazkhan971

    Fix ready: implemented on my fork (branch fix/354-subscription-backlog, regression test included, make test green) and ready to PR — but this repo's collaborators_only PR creation policy rejects PRs from non-collaborators (see #358), so I cannot open it. If PR creation opens for external contributors, I will open the PR immediately. Happy to adjust scope per maintainer feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions