From ea1125f57d93dd9456f513d8a8531cc8d6e3e796 Mon Sep 17 00:00:00 2001
From: Eugene Bujak <hmage@hmage.net>
Date: Mon, 8 Oct 2018 04:24:37 +0300
Subject: [PATCH] coredns plugin -- don't reload from querylog on SIGUSR, we
 already have it in memory

---
 coredns_plugin/querylog_top.go | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/coredns_plugin/querylog_top.go b/coredns_plugin/querylog_top.go
index 2ba7bcb4..82ee1130 100644
--- a/coredns_plugin/querylog_top.go
+++ b/coredns_plugin/querylog_top.go
@@ -36,6 +36,7 @@ func (top *hourTop) init() {
 
 type dayTop struct {
 	hours        []*hourTop
+	loaded       bool
 	sync.RWMutex // write -- rotating hourTop, read -- anything else
 }
 
@@ -209,6 +210,9 @@ func (r *dayTop) addEntry(entry *logEntry, now time.Time) error {
 func loadTopFromFiles() error {
 	now := time.Now()
 	runningTop.RLock()
+	if runningTop.loaded {
+		return nil
+	}
 	defer runningTop.RUnlock()
 	onEntry := func(entry *logEntry) error {
 		err := runningTop.addEntry(entry, now)
@@ -226,6 +230,8 @@ func loadTopFromFiles() error {
 		return err
 	}
 
+	runningTop.loaded = true
+
 	return nil
 }