+2
-2
go.mod
+2
-2
go.mod
······
+5
go.sum
+5
go.sum
···github.com/ClickHouse/clickhouse-go/v2 v2.34.0/go.mod h1:yioSINoRLVZkLyDzdMXPLRIqhDvel8iLBlwh6Iefso8=···golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-43
main.go
-43
main.go
······-cache := dns.NewLRUCache(cfg.Cache.MaxItems, cfg.Cache.CleanupInterval.Duration, logger.With("component", "cache"))······-func monitorCacheMetrics(cache dns.Cache, metricsClient *metrics.ClickHouseMetrics, logger *slog.Logger) {
+2
-26
pkg/config/config.go
+2
-26
pkg/config/config.go
············return cfg, fmt.Errorf("invalid logging level '%s', must be one of: %v", cfg.Logging.Level, validLevels)
+62
-316
pkg/dns/resolve.go
+62
-316
pkg/dns/resolve.go
············func (h *QueryHandler) resolveQuestion(ctx context.Context, question magna.Question, servers []string) ([]magna.ResourceRecord, error) {-h.Logger.Debug("cache hit during recursion", "question", question.QName, "type", question.QType)+cname_answers, err := h.resolveQuestion(ctx, magna.Question{QName: msg.Answer[0].RData.String(), QType: question.QType, QClass: question.QClass}, h.RootServers)+ans, err := h.resolveQuestion(ctx, magna.Question{QName: a.RData.String(), QType: magna.AType, QClass: magna.IN}, h.RootServers)-h.Logger.Warn("A record lookup for NS succeeded but yielded no matching A records", "ns", nsName)-h.Logger.Warn("Processed delegation but failed to find any next server IPs", "question", question.QName, "server", res.Server, "ns_records_count", len(nsRecords), "ns_without_glue", nsRecordsWithoutGlue, "depth", depth)-h.Logger.Debug("Received NODATA response (NOERROR, ANCount=0)", "question", question.QName, "server", res.Server, "depth", depth)-h.Logger.Warn("Unhandled response state", "question", question.QName, "server", res.Server, "rcode", msg.Header.RCode.String(), "ancount", msg.Header.ANCount, "nscount", msg.Header.NSCount, "depth", depth)-lastError = fmt.Errorf("unhandled response code %s from %s", msg.Header.RCode.String(), res.Server)-h.Logger.Warn("Resolution step timed out or cancelled", "question", question.QName, "elapsed", time.Since(time.Now().Add(-h.Timeout)), "depth", depth, "error", resolveCtx.Err()) // Approx elapsed-func queryServer(ctx context.Context, question magna.Question, server string, ch chan<- queryResponse) {+func queryServer(ctx context.Context, question magna.Question, server string, ch chan<- queryResponse, timeout time.Duration) {-slog.Debug("queryServer response channel send cancelled by context", "server", server, "question", question.QName)-slog.Debug("queryServer response channel blocked or closed on send", "server", server, "question", question.QName)-response.Error = fmt.Errorf("response ID mismatch (got %d, expected %d)", decodedMsg.Header.ID, query.Header.ID)
+4
-19
pkg/dns/server.go
+4
-19
pkg/dns/server.go
·········
+2
-97
pkg/metrics/clickhouse.go
+2
-97
pkg/metrics/clickhouse.go
······func NewClickHouseMetrics(config *config.MetricsConfig, logger *slog.Logger) (*ClickHouseMetrics, error) {··················m.logger.Error("Failed to execute statement for query metric", "error", err, "metric_index", count)···m.logger.Debug("Successfully flushed query metrics", "count", count, "duration", time.Since(start))-m.logger.Error("Failed to execute statement for cache metric", "error", err, "metric_index", count)-m.logger.Debug("Successfully flushed cache metrics", "count", count, "duration", time.Since(start))