Distributed systems analysis.
Detects distributed system anti-patterns: RPC calls without timeout, RPC in GenServer callbacks, global registration without conflict resolution, and distributed operations in init/1.
Output relations
rpc_without_timeout(func, variant)— RPC call with default infinity timeout.rpc_in_genserver_callback(func, variant)— RPC directly inside a GenServer callback.global_register_risk(func, name)— global.register_name without conflict resolution.global_blocking_op(func, op, retries)—:global.set_lock/:global.transwith blocking retries (infinityor positive integer;0is excluded).global_blocking_in_init(func, op)— blocking:globalop reachable frominit/1.distributed_in_init(func, op)— distributed operation in init/1 blocking supervisor.
Finding severities
global_blocking_in_init—:error. init blocks the supervisor and the lock blocks on cluster-wide agreement; a netsplit turns local startup into an indefinite hang.rpc_without_timeout,rpc_in_genserver_callback,global_register_risk,distributed_in_init—:warning. Remote latency or partition behavior leaking into local liveness.global_blocking_op—:info. Cluster-wide locking is legitimate when deliberate; flagged so the serialization point is visible.