Argus.Analyses.Ets (Panoptes v0.13.0)

Copy Markdown View Source

ETS table analysis.

Detects ETS usage patterns and potential issues: tables without proper concurrency options, unprotected owners, unnamed tables in processes, and ordered_set contention across modules.

Requires the ETS, OTP, and Supervision domain extractors for layer 2 facts about table creation, options, access patterns, and supervisor children.

Tables owned by permanent supervisor children are suppressed from ets_unprotected_owner since the table is recreated on restart.

Output relations

  • ets_unprotected_owner(name, mod) — table owner lacks heir protection (excludes permanent children).
  • ets_missing_read_concurrency(name) — table lacks read_concurrency option.
  • ets_missing_write_concurrency(name) — table lacks write_concurrency option.
  • ets_ordered_set_contention(name, mod1, mod2) — ordered_set accessed by multiple modules.
  • ets_unnamed_in_process(name, mod) — unnamed table created in a process.

Finding severities

  • ets_unprotected_owner:warning. Data loss on owner crash is a correctness hazard.
  • ets_missing_read_concurrency, ets_missing_write_concurrency, ets_ordered_set_contention:info. Performance tuning hints; the right setting depends on the table's actual access pattern.
  • ets_unnamed_in_process:info. A common, often deliberate pattern; flagged because the table is unreachable if the owner loses the reference.