This procedure is defined in the server but not documented via ad_proc or proc_doc and may be intended as a private interface.
The procedure is defined as:
proc ::nsmcp::accessFailureFields {stats options redactor} {
set filters {}
foreach key {status statusClass pool method recordSource bucketSeconds} {
set value [dict get $options $key]
lappend filters $key [expr {$key in {status bucketSeconds} && $value ne {} ? "number" : "string"}] $value
}
set sources {}
dict for {key value} [dict get $stats recordSources] {
lappend sources $key number $value
}
set span [expr {[dict get $options to]-[dict get $options from]}]
set context [dict get $stats contextRecords]
set count [dict get $stats requestCount]
set selectedShare [expr {$context ? $count/double($context) : {}}]
set fields [list filters object $filters context object [list requestCount number $context failedRecords number [dict get $stats contextFailedRecords] selectedRecords number $count selectedShare [expr {$context ? "number" : "null"}] $selectedShare requestsPerSecond number [expr {$context/double($span)}] selectedPerSecond number [expr {$count/double($span)}] scope string {Same scanned time/path/pool/method/source context before status filtering; evidence mode and scan limits also qualify this denominator.}] recordSources object $sources driver503Records number [dict get $stats driver503Records] queueFullReasonAvailable boolean false unavailableTimingCount number [expr {$count-[dict get $stats timingCount]}] timingScope string {Only logged worker phases contribute to timingCount or timing totals. Driver phases are synthetic/unavailable; valid logged start times still select the window. A driver 503 does not by itself prove queue-full. Driver names are reused thread labels, not unique request IDs.}]
set drivers {}
set i 0
dict for {driver n} [dict get $stats drivers] {
lappend drivers $i object [list value string [$redactor message $driver] count number $n]
incr i
}
set omitted [expr {[dict exists $stats omittedRecords drivers] ? [dict get $stats omittedRecords drivers] : 0}]
lappend fields drivers array $drivers driverCapacityOmittedRecords number $omitted
set timings {}
set i 0
foreach status [lsort -integer [dict keys [dict get $stats statusTimings]]] {
set timing [list status number $status]
dict for {key n} [dict get $stats statusTimings $status] {
lappend timing $key number $n
}
lappend timings $i object $timing
incr i
}
lappend fields statusTimings array $timings
set ranked {}
dict for {index bucket} [dict get $stats buckets] {
lappend ranked [list [dict get $bucket selectedRecords] $index $bucket]
}
set ranked [lsort -integer -decreasing -index 0 [lsort -integer -index 1 $ranked]]
set kept [lrange $ranked 0 49]
set omitted 0
set omittedContext 0
foreach row [lrange $ranked 50 end] {
incr omitted [dict get [lindex $row 2] selectedRecords]
incr omittedContext [dict get [lindex $row 2] contextRecords]
}
set rows {}
set i 0
foreach row [lsort -integer -index 1 $kept] {
lassign $row unused index bucket
set from [expr {[dict get $options from]+$index*[dict get $options bucketSeconds]}]
set to [expr {min([dict get $options to],$from+[dict get $options bucketSeconds])}]
set output [list from number $from to number $to selectedPerSecond number [expr {[dict get $bucket selectedRecords]/double($to-$from)}] contextPerSecond number [expr {[dict get $bucket contextRecords]/double($to-$from)}]]
dict for {key value} $bucket {
lappend output $key number $value
}
lappend rows $i object $output
incr i
}
lappend fields trafficBuckets object [list seconds number [dict get $options bucketSeconds] rows array $rows ranking string {Up to 50 occupied buckets with greatest selected count, ties earliest first; displayed chronologically. Unlisted empty buckets have zero observed records, not certified coverage.} occupiedBuckets number [dict size [dict get $stats buckets]] rankedOmittedBuckets number [expr {max(0,[dict size [dict get $stats buckets]]-50)}] rankedOmittedSelectedRecords number $omitted rankedOmittedContextRecords number $omittedContext]
return $fields
}