nsmcp::QuestionService method observeJob (protected)

 <instance of nsmcp::QuestionService[i]> observeJob record handle \
    job

Defined in /usr/local/ns/tcl/nsmcp/question-service.tcl

Only caller-owned conversation handles reach this method. Read one atomic retained snapshot, never invoke tools, load evidence or run SQL.

Parameters:
record (required)
handle (required)
job (required)

Testcases:
No testcase defined.
Source code:
set store [expr {[info exists :jobStore] ? ${:jobStore} : {}}]
# Definition reload preserves existing service objects. Resolve the
# current log-service store lazily when the new property is unset.
if {$store eq {} && [nsf::object::exists ::nsmcp::logService]} {
    set store [::nsmcp::logService cget -store]
}
if {$store eq {}} {return $job}
dict set job live true
if {[catch {nsv_get $store $handle} snapshot]
    || ![dict exists $snapshot server] || [dict get $snapshot server] ne [dict get $record server]
    || ![dict exists $snapshot expires] || [dict get $snapshot expires]<=[clock seconds]} {
    dict set job status expired
    return $job
}
if {![dict exists $snapshot status] || [dict get $snapshot status] ni {queued running complete failed}} {
    dict set job live false
    return $job
}
::nsmcp::logJobTiming snapshot {}
dict set job status [dict get $snapshot status]
foreach key {progress processingTime} {
    if {[dict exists $snapshot $key]} {
        dict set job $key [ns_json parse [ns_json value -- [list {} object [dict get $snapshot $key]]]]
    }
}
set occupancy [::nsmcp::logJobQueueFields $snapshot]
if {$occupancy ne {}} {
    dict set job queueOccupancy [ns_json parse [ns_json value -- [list {} object $occupancy]]]
}
return $job
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: