Skip to content

server: log Substrate actors that have no Task record at startup - #510

Open
itssimrank wants to merge 4 commits into
google:mainfrom
rkb32:orphan-check-v050
Open

itssimrank wants to merge 4 commits into
google:mainfrom
rkb32:orphan-check-v050

Conversation

@itssimrank

@itssimrank itssimrank commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

A Redis restart drops every Task record while the Substrate actors keep running, so ax no longer knows about sandboxes that still hold worker slots (#442). Make the divergence visible: at startup, list all actors and all tasks and log a warning for each actor with no matching atespace/name. The check only logs, is bounded to 30s, and a failure does not stop the server.

Tasks are read in one call rather than paged by offset, because a delete between pages would shift the list and could skip a live task.

Carried in from rkb32/ax:orphan-check at the maintainer's request on the issue; implementation and tests are rkb32's.

Part of #442

rkb32 added 4 commits October 22, 2026 13:42
After a Redis restart, Substrate actors can keep running with no Task
record. On startup, list all actors, page through all tasks, and log any
actor with no matching task. Log only; nothing is deleted.

The check runs before the HTTP server starts, with a 30 second timeout.
If Substrate is not configured, it is skipped.
Paging tasks by offset could skip a task when one was deleted between
pages, which made the check log a live actor as an orphan. A single read
of the task index avoids that. ListTasks skips index entries with no
record, so a short result no longer means the end of the list.
Substrate v0.5.0 moved page size and page token into ListOptions on
ListActorsRequest. Bump the pin to main's version and read them there.
@itssimrank itssimrank changed the title Orphan check v050 server: log Substrate actors that have no Task record at startup Oct 23, 2026
@itssimrank
itssimrank requested a review from rakyll October 23, 2026 23:42

@mayawang mayawang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @rkb32 for the rebase and for testing against a live v0.5.0 cluster, and @itssimrank for opening this and catching the license headers. Tests pass on main. Approving.

@rakyll

rakyll commented Oct 24, 2026 •

Copy link
Copy Markdown
Member

We shouldn't merge this, querying all actors is a very expensive query when there are millions of actors in a deployment. We shouldn't put an expensive query at the startup time. Instead, we need to persist the Task metadata persistently. We are going to make some major changes to the storage layer to avoid shadow copies of actors. Please let's not merge this.

@rakyll

rakyll commented Oct 25, 2026

Copy link
Copy Markdown
Member

See #515.

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.

5 participants