From 0f41388bd78668ceae6d5c12b05868bd0ca8fd1f Mon Sep 17 00:00:00 2001 From: Jason Cameron Date: Sat, 29 Mar 2025 23:24:06 -0400 Subject: Add periodic cleanup job for DecayMap (#8) (#158) * Add periodic cleanup job for DecayMap see https://github.com/TecharoHQ/anubis/issues/8 * Refactor: Improve DecayMap cleanup tests and add Len method - Refactored DecayMap cleanup tests to use the new Len method for more precise assertions. - Added a Len method to DecayMap to retrieve the number of entries. - Simplified conditional checks in Get method. * chore(changelog): add entry * fix(tests): Use Impl.expire for decaymap cleanup Signed-off-by: Jason Cameron --------- Signed-off-by: Jason Cameron --- cmd/anubis/main.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'cmd') diff --git a/cmd/anubis/main.go b/cmd/anubis/main.go index a7e7350..4cee20c 100644 --- a/cmd/anubis/main.go +++ b/cmd/anubis/main.go @@ -135,6 +135,20 @@ func makeReverseProxy(target string) (http.Handler, error) { return rp, nil } +func startDecayMapCleanup(ctx context.Context, s *libanubis.Server) { + ticker := time.NewTicker(1 * time.Hour) + defer ticker.Stop() + + for { + select { + case <-ticker.C: + s.CleanupDecayMap() + case <-ctx.Done(): + return + } + } +} + func main() { flagenv.Parse() flag.Parse() @@ -210,6 +224,8 @@ func main() { go metricsServer(ctx, wg.Done) } + go startDecayMapCleanup(ctx, s) + var h http.Handler h = s h = internal.RemoteXRealIP(*useRemoteAddress, *bindNetwork, h) -- cgit v1.2.3