mirror of
https://github.com/fosrl/pangolin.git
synced 2026-02-24 22:06:38 +00:00
Fix: Prevent cache memory leak by adding maxKeys limit and conditional caching
- Add maxKeys limit (10,000) to NodeCache to prevent unbounded memory growth - Skip caching undefined values when GeoIP/ASN lookups fail (e.g., when MaxMind DB not configured) - Add periodic cache statistics logging every 5 minutes for monitoring - Fixes memory leak where cache would grow indefinitely with high request volumes The maxKeys limit uses LRU eviction, so oldest entries are automatically removed when the limit is reached. With ~10k requests/day and 5min TTL, 10k keys provides ample headroom while preventing OOM issues. Fixes #2120
This commit is contained in:
committed by
Owen Schwartz
parent
9e68c6c004
commit
90c48f20e0
@@ -161,8 +161,11 @@ async function getCountryCodeFromIp(ip: string): Promise<string | undefined> {
|
||||
|
||||
if (!cachedCountryCode) {
|
||||
cachedCountryCode = await getCountryCodeForIp(ip); // do it locally
|
||||
// Cache for longer since IP geolocation doesn't change frequently
|
||||
cache.set(geoIpCacheKey, cachedCountryCode, 300); // 5 minutes
|
||||
// Only cache successful lookups to avoid filling cache with undefined values
|
||||
if (cachedCountryCode) {
|
||||
// Cache for longer since IP geolocation doesn't change frequently
|
||||
cache.set(geoIpCacheKey, cachedCountryCode, 300); // 5 minutes
|
||||
}
|
||||
}
|
||||
|
||||
return cachedCountryCode;
|
||||
|
||||
Reference in New Issue
Block a user