IPSC3 applies bounded retention to operating-system logs, the daemon's optional application log, MySQL binary logs, and transient database telemetry. Rotation and cleanup run outside the radio daemon so filesystem compression, log vacuuming, and database deletes cannot delay live voice or data packets.
| Data | Default Policy |
|---|---|
| systemd journal | 14 days, with a 512 MB persistent storage cap and compression enabled. |
| IPSC3 application log | Checked hourly; rotated daily or when it exceeds 128 MB; 14 rotations retained with archived generations compressed. |
| MySQL error log | Managed by the Ubuntu MySQL logrotate policy. |
| MySQL binary log | Seven-day recovery window with automatic expiry. |
A daily low-priority systemd service removes expired rows in batches of 2,000. Small batches and idle I/O scheduling avoid long table locks and reduce contention with live routing and dashboard updates.
| Data | Retention | Reason |
|---|---|---|
| Call events | 400 days | Preserves complete 12-month reports and the known-user API. |
| Raw APRS/DMR captures | 30 days | Protocol diagnostics only; decoded GPS history is kept separately. |
| Runtime performance samples | 7 days | High-frequency operational telemetry. |
| bMaster+ published peer telemetry | 7 days | Current transport diagnostics rather than permanent configuration. |
| Viewer heartbeats | 1 day after last activity | Transient viewer-presence state. |
| Completed or failed signal requests | 90 days | Operational prompt and signalling history. |
| Page dwell aggregates | 400 days | Long-term dashboard and CMS usage trends. |
| Expired dashboard sessions | Removed after expiry | Authentication housekeeping. |
Automatic maintenance does not delete SMS store-forward history, AI SMS requests and replies, dashboard audit records, RadioID data, hotspot token revocations, or decoded GPS position history. These records are either security-sensitive, deliberately historical, or part of the network's durable operating data.
Database retention defaults can be overridden by an administrator through
/etc/default/ipsc3-database-maintenance. A dry run reports the
number of rows eligible for removal without changing the database. The
maintenance service is independent of the IPSC3 daemon and does not require
a daemon restart.