diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-12-30 16:43:44 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2019-12-30 16:43:44 +0100 |
commit | e6d2c75780bcf161ea75c5a6f2dc43cfc93ecfe4 (patch) | |
tree | 5df4880ba2d43a1fc2200739456e477a7be4c79a | |
parent | 091d5f5857f76c9271fd8386ac534677c8080460 (diff) |
Add lock contention TODO
-rw-r--r-- | cache/cache.go | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/cache/cache.go b/cache/cache.go index 3b650e9..4a51963 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -164,11 +164,12 @@ func (c *Cache) Reset() { func (c *Cache) prefetch() bool { return c.client != nil } func (c *Cache) refreshExpired(interval time.Duration) { + // TODO: Reduce lock contention for large caches. Consider sync.Map c.mu.Lock() defer c.mu.Unlock() evicted := make(map[uint64]bool) for k, v := range c.values { - // Value will expiry before the next interval. Refresh now + // Value will expire before the next interval. Refresh now if c.isExpiredAfter(interval, v) { q := v.msg.Question[0] msg := dns.Msg{} |