nsmcp::LogService method start (public)
<instance of nsmcp::LogService> start context operation \ [ identifier ]
Defined in /usr/local/ns/tcl/nsmcp/lib/log-tools.tcl
- Parameters:
- context (required)
- operation (required)
- identifier (optional)
- Testcases:
- No testcase defined.
Source code: :require $context if {$operation ni {errors requestContext accessSummary}} {error "invalid log operation"} if {$operation eq "requestContext" && ![::nsmcp::logRecordParser validRequestIdentifier $identifier]} { return -code error -errorcode {NSMCP RPC -32602} "Invalid request identifier" } set requiresPeers [expr {$operation eq "accessSummary" && ([dict exists $identifier peer] || ([dict exists $identifier includePeerAddresses] && [dict get $identifier includePeerAddresses]))}] if {$requiresPeers} {${:authorizer} require $context diagnostics.logs.peers.read} ns_mutex lock ${:mutex} try { foreach key [nsv_array names ${:store}] { set record [nsv_get ${:store} $key] if {[dict get $record expires] <= [clock seconds] && [dict get $record status] in {complete failed}} { nsv_unset ${:store} $key } } if {[llength [nsv_array names ${:store}]] >= ${:maxJobs}} {error "log job limit reached"} set handle [ns_crypto::randombytes -encoding hex 32] nsv_set ${:store} $handle [dict create principal [$context principal] server [$context server] expires [expr {[clock seconds]+${:lifetime}}] status queued mappings {} requiresPeers $requiresPeers] try { ns_job queue -detached ${:queue} [list [self] run $handle $operation $identifier] } on error {message options} { nsv_unset ${:store} $handle return -options $options $message } } finally {ns_mutex unlock ${:mutex}} return [list {} object [list jobHandle string $handle status string queued server string [ns_info server]]]XQL Not present: Generic, PostgreSQL, Oracle
![[i]](/resources/acs-subsite/ZoomIn16.gif)