nsmcp::AccessAnalytics method drop (protected)
<instance of nsmcp::AccessAnalytics> drop reason cutoff \ [ limit ]
Defined in /usr/local/ns/tcl/nsmcp/lib/access-analytics.tcl
- Parameters:
- reason (required)
- cutoff (required)
- limit (optional, defaults to
"0")- Testcases:
- No testcase defined.
Source code: set db ${:db}; set now [clock seconds] if {$reason eq "age"} { set where {start < $cutoff} } else { set where {rowid IN (SELECT rowid FROM nsmcp_access_requests ORDER BY start LIMIT $limit)} } set count 0 $db execute "SELECT count(*) AS n,coalesce(min(start),0) AS first,coalesce(max(start),0) AS last FROM nsmcp_access_requests WHERE $where" row { set count $row(n); set first $row(first); set last $row(last) } if {$count==0} {return} $db execute "DELETE FROM nsmcp_access_requests WHERE $where" incr :rowCount -$count $db execute {INSERT INTO nsmcp_access_evictions(dropped_at,first_time,last_time,rows,reason) VALUES($now,$first,$last,$count,$reason)} set old [$db scalar {SELECT value FROM nsmcp_access_metadata WHERE key='droppedThrough'}] set through [expr {$old eq "" ? $last : max(double($old),$last)}] $db execute {INSERT OR REPLACE INTO nsmcp_access_metadata VALUES('droppedThrough',$through); INSERT OR REPLACE INTO nsmcp_access_metadata VALUES('lastEvictionAt',$now)} set limit ${:evictionLimit} $db execute {DELETE FROM nsmcp_access_evictions WHERE id NOT IN (SELECT id FROM nsmcp_access_evictions ORDER BY id DESC LIMIT $limit)}XQL Not present: Generic, PostgreSQL, Oracle
![[i]](/resources/acs-subsite/ZoomIn16.gif)