nsmcp::AccessRecordSupport method accessRecordRetry (protected)

 <instance of nsmcp::AccessRecordSupport[i]> accessRecordRetry \
    settings script [ publish ] [ observer ]

Defined in /usr/local/ns/tcl/nsmcp/log-traffic-record-00-support.tcl

Parameters:
settings (required)
script (required)
publish (optional)
observer (optional)

Testcases:
No testcase defined.
Source code:
set budget [:dict getdef $settings lockWaitMs 3000]
set began [clock milliseconds]
set delay 25
while {1} {
    try {
        return [uplevel 1 $script]
    } on error {message options} {
        set code [dict get $options -errorcode]
        set transient [expr {[lrange $code 0 1] eq {NSMCP RECORD_STORE} && [lindex $code 2] in {database-locked database-busy pool-busy}}]
        if {!$transient && [regexp -nocase {database (is |table is |schema is )?(locked|busy)} $message]} {
            set transient true
        }
        if {!$transient || [clock milliseconds]-$began >= $budget} {
            return -options $options $message
        }
        :accessIngestionObserve -observer $observer wait-lock
        accessScanProgress $publish waiting-record-store {files {} index 0 examinedBytes 0} {}
        set left [expr {$budget-([clock milliseconds]-$began)}]
        if {$left>0} {
            ns_sleep [expr {min($left,$delay)/1000.0}]
        }
        set delay [expr {min(250,$delay*2)}]
    }
}
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: