nsmcp::AccessLogIngestor method locateRecent (protected)
<instance of nsmcp::AccessLogIngestor> 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 trueXQL Not present: Generic, PostgreSQL, Oracle
![[i]](/resources/acs-subsite/ZoomIn16.gif)