util::log_rate_limit_check (private)
util::log_rate_limit_check severity key interval
Defined in packages/acs-tcl/tcl/utilities-procs.tcl
Return {suppressed reference}, where suppressed is -1 when this call should not log, or the number of additional suppressed calls. Reference is the thread name captured when the first full message was permitted. The caller must supply a positive interval in seconds.
- Parameters:
- severity (required)
- key (required)
- interval (required)
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
Source code: set severity [string tolower $severity] set count_key [list total $severity $key] set state_key [list window $severity $key] set sequence [nsv_incr ad_log_rate_limited $count_key] set now [clock seconds] if {[nsv_get ad_log_rate_limited $state_key state]} { lassign $state last_log accounted reference if {$sequence <= $accounted || ($now >= $last_log && $now - $last_log < $interval)} { return [list -1 ""] } } set result [list -1 ""] set mutex [nsv_get ad_log_rate_limited mutex] ns_mutex eval $mutex { set now [clock seconds] set emit 1 if {[nsv_get ad_log_rate_limited $state_key state]} { lassign $state last_log accounted reference if {$sequence <= $accounted || ($now >= $last_log && $now - $last_log < $interval)} { set emit 0 } } else { set accounted 0 set reference [ns_thread name] } if {$emit} { # # Existing two-element records have no reference. # Establish one with this newly permitted full message. # if {$reference eq ""} { set reference [ns_thread name] } set total [nsv_get ad_log_rate_limited $count_key] set suppressed [expr {$total - $accounted - 1}] nsv_set ad_log_rate_limited $state_key [list $now $total $reference] set result [list $suppressed $reference] } } return $resultXQL Not present: PostgreSQL, Oracle Generic XQL file: packages/acs-tcl/tcl/utilities-procs.xql