nsmcp::AccessLogIngestor method locateRecent (protected)

 <instance of nsmcp::AccessLogIngestor[i]> locateRecent f stateVar \
    size from deadline budgetVar

Defined in /usr/local/ns/tcl/nsmcp/lib/access-analytics.tcl

Parameters:
f (required)
stateVar (required)
size (required)
from (required)
deadline (required)
budgetVar (required)

Testcases:
No testcase defined.
Source code:
upvar 1 $stateVar state $budgetVar budget
set origin [dict get $state cursor]
set block [expr {min(1048576,${:maxReadBytes})}]
set plan [dict get $state seek]
if {$plan eq ""} {
    set plan [dict create phase expand high $size low $origin distance $block  end $size origin $origin from $from target [expr {($from/60)*60-300}]]
}
set found -1
while {$budget >= $block && [clock milliseconds] < $deadline} {
    if {[dict get $plan phase] eq "expand"} {
        set position [expr {max($origin,[dict get $plan end]-[dict get $plan distance])}]
    } else {
        if {[dict get $plan high]-[dict get $plan low] <= $block} {set found [dict get $plan low]; break}
        set position [expr {([dict get $plan low]+[dict get $plan high])/2}]
    }
    set sample [:sample $f $position $block]
    incr budget -$block
    if {$sample eq ""} {
        # Do not skip unknown log formats or oversized regions.
        set found $origin
        break
    }
    lassign $sample offset time
    if {$position == $origin && [dict get $plan high]-$origin <= $block} {
        set found $origin
        break
    }
    if {$time < [dict get $plan target]} {
        dict set plan low $offset
        dict set plan phase bisect
    } elseif {$position == $origin} {
        set found $origin
        break
    } else {
        dict set plan high $position
        if {[dict get $plan phase] eq "expand"} {dict set plan distance [expr {2*[dict get $plan distance]}]}
    }
}
if {$found < 0} {dict set state seek $plan; return false}
dict set state seek {}
dict set state recentInitialized true
dict set state recentFrom [expr {([dict get $plan from]/60)*60}]
dict set state initialOffset $found
dict set state historyCursor $origin
dict set state historyEnd $found
dict set state cursor $found
seek $f [expr {max(0,$found-64)}]
dict set state anchor [read $f [expr {min(64,$found)}]]
return true
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: