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.