Hanging & Deadlocked Channel Scrubbing

Hanging & Deadlocked Channel Scrubbing

To prevent stale voice sessions from accumulating across server network ports, Asterisk 2 runs automated Channel Garbage Collectors. The service identifies non-communicative call paths to clear abandoned hardware slots automatically.


Deadlock Detection & Scrubbing Pipeline

The chart below details the maintenance sweep isolating disconnected telephone endpoints:

graph TD
    %% Sweeper
    subgraph MaintenanceCron["Background Garbage Collection"]
        TriggerSweep["Active Channel Monitor Task<br/>(Executes Sweep Every 60 Seconds)"]
    end

    %% Evaluation
    subgraph SessionCheck["Telemetry Audit Layer"]
        CheckState["Audit Cached Channel Inactivity<br/>(Last Received Signaling Frame &gt; 3600s)"]
    end

    %% Drop Target
    subgraph TeardownTarget["API Termination Engine"]
        ExecPurge["DELETE /ari/channels/{id}<br/>(Force Channel Dissolution)"]
    end

    %% Links
    TriggerSweep ==>|"Query Concurrent Cache Maps"| CheckState
    CheckState ==>|"Unresponsive Timeframe Identified"| ExecPurge

    %% High-Contrast Theming Palette
    classDef cronToken fill:#0f172a,stroke:#38bdf8,stroke-width:2px,color:#fff,rx:6px,ry:6px;
    classDef chkToken fill:#1e293b,stroke:#a855f7,stroke-width:2px,color:#fff,rx:6px,ry:6px;
    classDef dropToken fill:#312e81,stroke:#ec4899,stroke-width:2px,color:#fff,rx:6px,ry:6px;

    class MaintenanceCron,TriggerSweep cronToken;
    class SessionCheck,CheckState chkToken;
    class TeardownTarget,ExecPurge dropToken;

Automated Scrubbing Parameters

1. Absolute Maximum Duration Bounds

To completely prevent orphaned telephone connections from locking GSM gateway channels overnight, global background configurations enforce absolute duration caps. Any individual voice session running past 4 hours continuous connection triggers automatic termination sweeps.

2. Stasis Context Cleanup Triggers

If client socket disconnects drop without firing normal websocket signaling frames, maintenance loops sweep operational channel lists to force memory cleanup across mapped dictionaries.