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.} {
|