ETS-based implementation of ClusterHelper.RoleStore.
Maintains two named ETS tables:
ClusterHelper.NodeConfig— a:bagtable with{:scope, scope, :role, role} → nodeand{:scope, scope, :node, node} → roleentries for bidirectional O(1) lookupsClusterHelper.NodeConfig_nodes— a:settable with{:scope, scope, node}entries for O(1) node enumeration per scope
Read operations (get_my_roles/1, get_nodes/2, get_roles/2, all_nodes/1)
bypass any GenServer and read directly from ETS with read_concurrency: true.
Table names
Table names are kept as ClusterHelper.NodeConfig and its derived name
for backward compatibility with any code that references the ETS table
directly.