Skip to content

Commit fc5d8f5

Browse files
authored
chore: add cache health logging (#601)
1 parent 133a184 commit fc5d8f5

4 files changed

Lines changed: 18 additions & 6 deletions

File tree

config/config.exs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,14 @@ config :mobile_app_backend, alerts_with_summaries_broadcast_interval_ms: 60_000
3030
config :mobile_app_backend, predictions_broadcast_interval_ms: 5_000
3131
config :mobile_app_backend, vehicles_broadcast_interval_ms: 500
3232

33-
config :mobile_app_backend, MBTAV3API.ResponseCache, allocated_memory: 250_000_000
33+
config :mobile_app_backend, MBTAV3API.ResponseCache,
34+
allocated_memory: 250_000_000,
35+
stats: true
3436

3537
config :mobile_app_backend, MBTAV3API.RepositoryCache,
3638
gc_interval: :timer.hours(2),
37-
allocated_memory: 2_000_000_000
39+
allocated_memory: 2_000_000_000,
40+
stats: true
3841

3942
config :mobile_app_backend, MobileAppBackend.Search.Algolia.Cache,
4043
gc_interval: :timer.hours(6),

lib/mobile_app_backend/application.ex

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,16 @@ defmodule MobileAppBackend.Application do
3636
{Ecto.Migrator, repos: Application.fetch_env!(:mobile_app_backend, :ecto_repos)},
3737
{Oban, Application.fetch_env!(:mobile_app_backend, Oban)},
3838
{MobileAppBackend.Search.Algolia.Cache, []},
39-
{MobileAppBackend.Health.Cache, cache: MobileAppBackend.Search.Algolia.Cache},
39+
Supervisor.child_spec(
40+
{MobileAppBackend.Health.Cache, cache: MobileAppBackend.Search.Algolia.Cache},
41+
id: :search_cache_stats
42+
),
43+
Supervisor.child_spec({MobileAppBackend.Health.Cache, cache: MBTAV3API.RepositoryCache},
44+
id: :repo_cache_stats
45+
),
46+
Supervisor.child_spec({MobileAppBackend.Health.Cache, cache: MBTAV3API.ResponseCache},
47+
id: :response_cache_stats
48+
),
4049
MobileAppBackend.MapboxTokenRotator,
4150
MobileAppBackend.Alerts.Registry,
4251
MobileAppBackend.Predictions.Registry,

lib/mobile_app_backend/health/cache.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ defmodule MobileAppBackend.Health.Cache do
2222
nil ->
2323
Logger.info("#{__MODULE__} cache=#{cache} cache stats disabled")
2424

25-
{:ok, %{stats: %{hits: cache_hits, misses: cache_misses}}} ->
25+
{:ok, %{stats: stats}} ->
2626
Logger.info(
27-
"#{__MODULE__} cache=#{cache} cache_health hits=#{cache_hits} misses=#{cache_misses} hit_rate=#{cache_hits / max(cache_hits + cache_misses, 1)}"
27+
"#{__MODULE__} cache=#{cache} cache_health #{Enum.map_join(stats, " ", fn {key, val} -> "#{key}=#{val}" end)}}"
2828
)
2929

3030
{:error, error} ->

test/mobile_app_backend/health/cache_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ defmodule MobileAppBackend.Health.CacheTest do
3434
Health.Cache.handle_info(:check, %{cache: Cache})
3535
end)
3636

37-
assert msg =~ "cache=#{Cache} cache_health hits=4 misses=4 hit_rate=0.5"
37+
assert msg =~ "cache=#{Cache} cache_health hits=4 misses=4"
3838
end
3939
end
4040
end

0 commit comments

Comments
 (0)