[P0-27] Introduce workload-specific dispatchers and cl-gserver router pools #35
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/starintel-server#35
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Most actors use the default shared dispatcher, blocking database work is mixed with control/routing work, producer/CouchDB agents use pinned threads, and Rabbit consumers bypass the actor routing model through ad hoc thread creation.
The canonical auto-research architecture requires router-backed routee pools for hot in-process paths and separate control/data dispatchers.
Required dispatcher tree
At minimum:
:platform/control— lifecycle, registry, health, routee management, overload decisions:platform/ingest— validation and ingest coordination:platform/storage— blocking CouchDB operations:platform/rabbit— Rabbit owner/reactor control:platform/target— target scheduling and lease coordination:platform/cpu— bounded CPU-heavy transforms:platform/research— resumable research job coordinationRequired router pools
Create managed or explicitly lifecycle-owned cl-gserver routers for:
Use round-robin for stateless equivalent routees and keyed routing where target/dataset ordering or state affinity matters. Do not use random routing for stateful keyed work.
Acceptance tests