Index: openacs-4/packages/acs-developer-support/tcl/acs-developer-support-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/tcl/acs-developer-support-procs.tcl,v diff -u -r1.11 -r1.12 --- openacs-4/packages/acs-developer-support/tcl/acs-developer-support-procs.tcl 12 Feb 2003 16:32:43 -0000 1.11 +++ openacs-4/packages/acs-developer-support/tcl/acs-developer-support-procs.tcl 17 May 2003 09:45:46 -0000 1.12 @@ -53,9 +53,6 @@ ad_proc ds_collection_enabled_p {} { Returns whether we're collecting information about this request } { - if { ![ds_enabled_p] } { - return 0 - } global ad_conn if { ![info exists ad_conn(request)] } { return 0 @@ -71,18 +68,13 @@ ad_proc ds_user_switching_enabled_p {} { Returns whether user-switching is enabled. } { - if { ![ds_enabled_p] } { - return 0 - } - return [nsv_get ds_properties user_switching_enabled_p] + return [expr {[nsv_exists ds_properties user_switching_enabled_p] && + [nsv_get ds_properties user_switching_enabled_p]}] } ad_proc ds_database_enabled_p {} { Returns true if developer-support database facilities are enabled. } { - if { ![ds_enabled_p] } { - return 0 - } return [nsv_get ds_properties database_enabled_p] } @@ -152,7 +144,7 @@ } } - if { [ad_parameter -package_id [ds_instance_id] ShowCommentsInlineP "developer-support" 0] } { + if { [ad_parameter -package_id [ds_instance_id] ShowCommentsInlineP acs-developer-support 0] } { if { [nsv_exists ds_request "$ad_conn(request).comment"] } { append out "
" foreach comment [nsv_get ds_request "$ad_conn(request).comment"] { @@ -179,7 +171,7 @@ ds_replace_get_user_procs [ds_user_switching_enabled_p] ds_add start [ns_time] - ds_add conn startclicks [clock clicks] + ds_add conn startclicks [ad_conn start_clicks] for { set i 0 } { $i < [ns_set size [ad_conn headers]] } { incr i } { ds_add headers [ns_set key [ad_conn headers] $i] [ns_set value [ad_conn headers] $i] } @@ -191,43 +183,48 @@ proc_doc ds_collect_db_call { db command statement_name sql start_time errno error } { if { [ds_enabled_p] && [ds_collection_enabled_p] && [ds_database_enabled_p] } { + set bound_sql $sql - set bound_sql $sql + # It is very useful to be able to see the bind variable values displayed in the + # ds output. For postgresql we have a way of doing this with the proc db_bind_var_substitution + # but this proc does not work for Oracle + if { [string equal [db_type] "postgresql"] } { + upvar bind bind + set errno [catch { + if { [info exists bind] && [llength $bind] != 0 } { + if { [llength $bind] == 1 } { + set bind_vars [list] + set len [ns_set size $bind] + for {set i 0} {$i < $len} {incr i} { + lappend bind_vars [ns_set key $bind $i] \ + [ns_set value $bind $i] + } + set bound_sql [db_bind_var_substitution $sql $bind_vars] + } else { + set bound_sql [db_bind_var_substitution $sql $bind] + } + } else { + set bound_sql [uplevel 4 [list db_bind_var_substitution $sql]] + } + } error] - # It is very useful to be able to see the bind variable values displayed in the - # ds output. For postgresql we have a way of doing this with the proc db_bind_var_substitution - # but this proc does not work for Oracle - if { [string equal [db_type] "postgresql"] } { - upvar bind bind - set errno [catch { - if { [info exists bind] && [llength $bind] != 0 } { - if { [llength $bind] == 1 } { - set bind_vars [list] - set len [ns_set size $bind] - for {set i 0} {$i < $len} {incr i} { - lappend bind_vars [ns_set key $bind $i] \ - [ns_set value $bind $i] - } - set bound_sql [db_bind_var_substitution $sql $bind_vars] - } else { - set bound_sql [db_bind_var_substitution $sql $bind] - } - } else { - set bound_sql [uplevel 4 [list db_bind_var_substitution $sql]] + if { $errno } { + ns_log Error "ds_collect_db_call: $error" } - } error] + } - if { $errno } { - ns_log Error "ds_collect_db_call: $error" - } - } - - ds_add db $db $command $statement_name $bound_sql $start_time [clock clicks] $errno $error + ds_add db $db $command $statement_name $bound_sql $start_time [clock clicks] $errno $error } } proc_doc ds_add { name args } { Sets a developer-support property for the current request. Should never be used except by elements of the request processor (e.g., security filters or abstract URLs). } { - if { [ds_enabled_p] } { + + if { [ds_enabled_p] && [ds_collection_enabled_p] } { + if { [catch { nsv_exists ds_request . }] } { + ns_log "Warning" "ds_request NSVs not initialized" + return + } + global ad_conn if { ![info exists ad_conn(request)] } { set ad_conn(request) [nsv_incr rp_properties request_count] @@ -238,37 +235,40 @@ proc_doc ds_comment { value } { Adds a comment to the developer-support information for the current request. } { - if { [ds_enabled_p] } { - ds_add comment $value - } + if { [ds_enabled_p] } { + ds_add comment $value + } } proc ds_sweep_data {} { - if { [ds_enabled_p] } { - set now [ns_time] - set lifetime [ad_parameter -package_id [ds_instance_id] DataLifetime "developer-support" 900] - - # kill_requests is an array of request numbers to kill - array set kill_requests [list] - - set names [nsv_array names ds_request] - foreach name $names { - if { [regexp {^([0-9]+)\.start$} $name "" request] && \ - $now - [lindex [nsv_get ds_request $name] 0] > $lifetime } { - set kill_requests($request) 1 + set now [ns_time] + set lifetime [ad_parameter -package_id [ds_instance_id] DataLifetime acs-developer-support 900] + + # Find the last request before the DataLifetime cutoff + + set names [nsv_array names ds_request] + set max_request 0 + foreach name $names { + if { [regexp {^([0-9]+)\.start$} $name match request] + && $now - [lindex [nsv_get ds_request $name] 0] > $lifetime } { + if {[expr {$request > $max_request}]} { + set max_request $request } } - set kill_count 0 - foreach name $names { - if { [regexp {^([0-9]+)\.} $name "" request] && \ - [info exists kill_requests($request)] } { - incr kill_count - nsv_unset ds_request $name - } - } - - ns_log "Notice" "Swept developer support information for [array size kill_requests] requests ($kill_count nsv elements)" } + + # kill any request older than last request. + + set kill_count 0 + foreach name $names { + if { [regexp {^([0-9]+)\.} $name "" request] + && [expr {$request <= $max_request}] } { + incr kill_count + nsv_unset ds_request $name + } + } + + ns_log "Notice" "Swept developer support information for [array size kill_requests] requests ($kill_count nsv elements)" } proc_doc ds_trace_filter { conn args why } { Adds developer-support information about the end of sessions.} {