1.0 KiB
ADR 0011: Process/Actor Model Over No-GIL Threading
Status
Proposed
Context
FreeDMR may need more concurrency for reporting, export, analysis, or future scaling. Shared mutable routing state is risky.
Decision
If FreeDMR 2 needs concurrency beyond the reactor, prefer explicit parent/child or actor-style ownership boundaries over shared-memory no-GIL threading for routing state.
Rationale
Single-owner state and explicit messages are easier for sysops and contributors to reason about. They reduce race risks in delay-sensitive packet handling.
Consequences
Some features may require serialization and message protocols between processes. This is clearer than shared locks around routing dictionaries.
Compatibility
Twisted can remain the initial transport shell while workers handle reporting/export or expensive tasks.
Testing Requirements
Tests must cover worker failure, queue overflow, restart behaviour, message ordering where required, and packet handling continuing when a non-critical worker fails.