AuroraMeter. Store
(Aurora Meter v1.0.0)
View Source
Internal. Not part of the supported API (see API inventory). It may change in any release, including a patch.
Owns the ETS tables that back real-time metering.
This process does nothing on the hot path. It merely creates and owns public,
named ETS tables so that writers (AuroraMeter.Counter) and readers hit ETS
directly without a GenServer bottleneck:
:aurora_meter_counters:{tenant_key, feature, bucket} => value, wherebucketis a period start (DateTime) or{:day, Date}for history:aurora_meter_dirty: counter keys changed since the last database flush:aurora_meter_touched: counter keys changed since the last PubSub broadcast:aurora_meter_subscription_cache:tenant_key => {subscription, expires_at}
It also listens on the subscription-invalidation PubSub topic so that a plan change applied on any node evicts the cached subscription on every node.
If this process crashes the tables are lost; its supervisor restarts it and the tables are recreated (counter state rehydrates lazily from the database).
Summary
Functions
Returns a specification to start this module under a supervisor.
The ETS table holding counter values.
The ETS table holding the dirty-key set (pending database flush).
The PubSub topic on which subscription changes are announced.
The ETS table caching subscription lookups.
The ETS table holding the touched-key set (pending PubSub broadcast).
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec counters_table() :: atom()
The ETS table holding counter values.
@spec dirty_table() :: atom()
The ETS table holding the dirty-key set (pending database flush).
@spec invalidation_topic() :: String.t()
The PubSub topic on which subscription changes are announced.
@spec subscription_cache_table() :: atom()
The ETS table caching subscription lookups.
@spec touched_table() :: atom()
The ETS table holding the touched-key set (pending PubSub broadcast).