[P0-27] Add one total concurrency count to Sento dispatchers and pinned actors #139
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#139
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
StarIntel needs multiple Sento dispatchers/pinned actors for isolation, but Sento currently lets each named dispatcher realize its own
:workerscount independently. Those local counts multiply because there is no aggregate Sento execution-lane ceiling.This issue is now explicitly not a router rewrite or new workload DSL.
Exact Sento baseline
Current
starintel-server/qlfile.lockpins:mdbergmann/cl-gserver@6a510c5b58469e72e6363bd3a6059d80b9a5c320At that revision:
:pinned-> onemessage-box/btthread each;:pinnedactor -> onemessage-box/btthread;message-box/dp, no owned thread;Therefore the correct accounting unit is one Sento execution lane.
Preserve Sento behavior
Keep unchanged:
:workersvalue;register-new-dispatcher;:random;:round-robin;message-box/dpsemantics;message-box/bt/:pinnedsemantics;The missing invariant is only:
sum(all live Sento execution-lane ownership) <= numeric Sento grant from #34/#177 process plannerLane costs
:pinnedactorInternally pinned dispatcher workers must be charged once, not once through the dispatcher and again through generic pinned-actor accounting.
Required behavior
Startup
Preflight the sum of configured shared-dispatcher workers before the first dispatcher worker thread starts.
Example:
:shared=4 + :storage=4, Sento grant=6 -> typed failure, zero worker realization.Dynamic dispatcher
Reserve N atomically before creating N workers. If insufficient capacity exists, create no dispatcher workers. Partial construction failure rolls back the complete reservation.
Ordinary pinned actor
Reserve one lane immediately before
message-box/btstarts. If free capacity is zero, fail before thread creation.Dispatcher-backed actor/router
No additional lane reservation.
Stop/restart
Release exactly once on confirmed owner termination, not merely stop request. Restarting the processing thread of the same live pinned mailbox does not consume another lane.
Diagnostics
Expose at minimum:
This is read-only capacity input for #36. #36 still owns queue admission, overload, drop/block/reject, and prefetch behavior.
Process-budget dependency
#34 / Auto-Research #176/#177 remains the one process-wide thread authority. Sento receives a numeric grant after non-Sento thread demands/control reserve are planned. Do not add a competing user-facing max-thread configuration.
Also retire StarIntel's custom shared dispatcher ID
:pinned; Sento reserves:pinnedas dedicated-thread mailbox behavior before named-dispatcher lookup.Canonical ARDR authority
lost-rob0t/starintel-auto-research/roam/research/ardr-issues/ARDR-ISSUE-188-workload-dispatchers-router-pools.orglost-rob0t/starintel-auto-research/roam/design/star-server/STAR-SERVER-042-workload-dispatchers-router-pools.orgThe stable Org IDs/paths are retained; their earlier workload-topology-first text is superseded by the deeper Sento backend analysis.
Proposed first implementation slice — PENDING OPERATOR APPROVAL
Slice 1: pure concurrency ledger + configured-dispatcher demand preflight.
Mandatory RED-first targets:
used=6,free=0;Follow-on REDs:
Acceptance criteria
Implementation authorization
PENDING / AWAITING_OPERATOR_APPROVALResearch/design readiness and this issue update do not authorize implementation.