Treat unreachable resolvers as unknown, not warnings
An unreachable resolver tells us nothing about propagation: it's neither a disagreement nor an error in the zone. Surface it as a distinct Unreachable state so it stops polluting warning counts and the Disagreeing/Errored buckets.
This commit is contained in:
parent
30cc586f34
commit
d4c44e879b
5 changed files with 28 additions and 17 deletions
|
|
@ -116,7 +116,7 @@ type regionRow struct {
|
|||
Reachable int
|
||||
Agreeing int
|
||||
Disagreeing int
|
||||
Errored int
|
||||
Unreachable int
|
||||
}
|
||||
|
||||
type resolverRow struct {
|
||||
|
|
@ -283,28 +283,32 @@ func buildReportView(d *ResolverPropagationData, findings []Finding) *reportView
|
|||
r.Resolvers++
|
||||
if rv.Reachable {
|
||||
r.Reachable++
|
||||
} else {
|
||||
r.Unreachable++
|
||||
}
|
||||
if rv.Reachable && !rv.Filtered {
|
||||
ok := true
|
||||
unreachableProbe := false
|
||||
disagrees := false
|
||||
for key, p := range rv.Probes {
|
||||
if p == nil || p.Error != "" {
|
||||
r.Errored++
|
||||
ok = false
|
||||
break
|
||||
unreachableProbe = true
|
||||
continue
|
||||
}
|
||||
cv := d.RRsets[key]
|
||||
if cv == nil || cv.ConsensusSig == "" {
|
||||
continue
|
||||
}
|
||||
if p.Signature != cv.ConsensusSig {
|
||||
ok = false
|
||||
break
|
||||
disagrees = true
|
||||
}
|
||||
}
|
||||
if ok {
|
||||
r.Agreeing++
|
||||
} else {
|
||||
switch {
|
||||
case disagrees:
|
||||
r.Disagreeing++
|
||||
case unreachableProbe:
|
||||
r.Unreachable++
|
||||
default:
|
||||
r.Agreeing++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -664,7 +668,7 @@ const reportTemplateHTML = `<!DOCTYPE html>
|
|||
|
||||
<h2>Per-region view</h2>
|
||||
<table>
|
||||
<thead><tr><th>Region</th><th>Reachable</th><th>Agreeing</th><th>Disagreeing</th><th>Errored</th></tr></thead>
|
||||
<thead><tr><th>Region</th><th>Reachable</th><th>Agreeing</th><th>Disagreeing</th><th>Unreachable</th></tr></thead>
|
||||
<tbody>
|
||||
{{range .Regions}}
|
||||
<tr>
|
||||
|
|
@ -672,7 +676,7 @@ const reportTemplateHTML = `<!DOCTYPE html>
|
|||
<td>{{.Reachable}} / {{.Resolvers}}</td>
|
||||
<td><span class="ok">{{.Agreeing}}</span></td>
|
||||
<td>{{if .Disagreeing}}<span class="warn">{{.Disagreeing}}</span>{{else}}0{{end}}</td>
|
||||
<td>{{if .Errored}}<span class="crit">{{.Errored}}</span>{{else}}0{{end}}</td>
|
||||
<td>{{if .Unreachable}}<span class="muted">{{.Unreachable}}</span>{{else}}0{{end}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
|
|
@ -690,7 +694,7 @@ const reportTemplateHTML = `<!DOCTYPE html>
|
|||
</td>
|
||||
<td>{{.Region}}</td>
|
||||
<td>{{.Transport}}</td>
|
||||
<td>{{if .Reachable}}{{.AvgMs}}{{else}}<span class="crit">unreachable</span>{{end}}</td>
|
||||
<td>{{if .Reachable}}{{.AvgMs}}{{else}}<span class="muted">unreachable</span>{{end}}</td>
|
||||
<td>
|
||||
{{range .Probes}}
|
||||
<details>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue