1.9 KiB
The user requested the fourth iterative refinement for Tractor PR 490: expose subscriber lag policy through the public MsgStream.subscribe() and LinkedTaskChannel.subscribe() wrappers, then stop for a complete commit plan. This enables piker to replace private receiver mutation.
git diff HEAD~1..HEAD -- tractor/_streaming.py
Added raise_on_lag: bool = True to MsgStream.subscribe(). The first call passes the policy to the irreversibly allocated root broadcaster and its child; later calls configure each child independently while retaining the root’s first-call policy.
git diff HEAD~1..HEAD -- tractor/to_asyncio.py
Added equivalent lag-policy forwarding to LinkedTaskChannel.subscribe().
git diff HEAD~1..HEAD -- docs/guide/streaming.rst
git diff HEAD~1..HEAD -- docs/guide/asyncio.rst
Documented strict versus warn/drop/resume behavior, independent child policy, and first-call root policy for both wrapper types.
git diff HEAD~1..HEAD -- tests/test_task_broadcasting.py
Added a parameterized wrapper-level regression using minimal receive-compatible handles. It verifies a first non-raising subscription configures root and child, then a later strict child does not mutate the sticky root policy.
Verification output:
................... [100%]
19 passed in 5.71s
.................... [100%]
20 passed in 6.88s
. [100%]
1 passed in 0.86s
The second and third runs cover actual MsgStream and infected-asyncio LinkedTaskChannel fan-out respectively. Python compilation and git diff --check passed. Adversarial review found no actionable issues.