Forum OpenACS Q&A: Re: site-map problems with aolserver 4

Collapse
Posted by Vinod Kurup on
Tammy, thanks for confirming that you're having a problem with this too. I see you're using PG and I'm using Oracle, so it's db independent.

I'm still trying to figure out why the 'invalid handle' error comes up in the first place. I've narrowed the problem down to the ns_eval command. I put the following 2 commands into a .tcl file:


ns_eval {}
ns_return 200 text/plain "Hello"
IE and tclwebtest return no data unless you reload a few times. Here's the error:

[23/Apr/2003:19:42:15][12078.81926][-conn:openacs4::2] Debug: RP (40.286 ms): rp_filter: setting up request: GET /test/new 
[23/Apr/2003:19:42:15][12078.81926][-conn:openacs4::2] Notice: Security: 1051141335 sec_generate_session_id_cookie setting 3602, 0.
[23/Apr/2003:19:42:15][12078.81926][-conn:openacs4::2] Debug: Security: 1051141335 sec_generate_session_id_cookie setting 3602, 0.
[23/Apr/2003:19:42:15][12078.81926][-conn:openacs4::2] Debug: Security: Getting token_id 377, value 03B4887F014487C04E086720B19965FA10B8FEC1
[23/Apr/2003:19:42:15][12078.81926][-conn:openacs4::2] Error: invalid database id:  "nsdb0"
invalid database id:  "nsdb0"
    while executing
"ns_ora 0or1row nsdb0 {
            select 1
            from dual
            where 't' = acs_permission.permission_p(:object_id, :party_id, :privileg..."
    ("uplevel" body line 1)
    invoked from within
"uplevel $ulevel [list ns_ora $type $db $sql] $args"
    invoked from within
"db_exec 0or1row $db $full_statement_name $sql"
    invoked from within
"set selection [db_exec 0or1row $db $full_statement_name $sql]"
    ("uplevel" body line 2)
    invoked from within
"uplevel 1 $code_block "
    invoked from within
"db_with_handle db {
	set selection [db_exec 0or1row $db $full_statement_name $sql]
    }"
    (procedure "db_0or1row" line 22)
    invoked from within
"db_0or1row select_permission_p {}"
    (procedure "permission::permission_p_not_cached" line 6)
    invoked from within
"permission::permission_p_not_cached -party_id $party_id -object_id $object_id -privilege $privilege"
    (procedure "permission_p" line 8)
    invoked from within
"permission_p -party_id $party_id -object_id $object_id -privilege $privilege"
    (procedure "permission::require_permission" line 7)
    invoked from within
"permission::require_permission -object_id [ad_conn object_id] -privilege read"
    invoked from within
"if {[string match "admin/*" [ad_conn extra_url]]} {
            permission::require_permission -object_id [ad_conn object_id] -privilege admin
	} else..."
    ("uplevel" body line 2)
    invoked from within
"uplevel $code"
    invoked from within
"ad_try {
          if {[string match "admin/*" [ad_conn extra_url]]} {
            permission::require_permission -object_id [ad_conn object_id] -priv..."
    (procedure "rp_filter" line 152)
    invoked from within
"rp_filter preauth"
Again, this works fine on aolserver 3.3+ad13. Unfortunately, I still don't know what ns_eval has to do with it or why the problem only happens during rp_filter.
Collapse
Posted by Jamie Rasmussen on
If it helps, I also see that error with PostgreSQL. Using your hello script, I get:

[24/Apr/2003:19:45:38][1288.1416][-conn:openacs4::0] Error: invalid database id:  "nsdb0"
invalid database id:  "nsdb0"
    while executing
"ns_db poolname $handle"
    (procedure "db_driverkey" line 7)
    invoked from within
"db_driverkey -handle_p 1 $db"
    (procedure "db_exec" line 3)
    invoked from within
"db_exec 0or1row $db $full_statement_name $sql"
    invoked from within
"set selection [db_exec 0or1row $db $full_statement_name $sql]"
    ("uplevel" body line 2)
    invoked from within
"uplevel 1 $code_block "
    invoked from within
"db_with_handle -dbn $dbn db {
        set selection [db_exec 0or1row $db $full_statement_name $sql]
    }"
    (procedure "db_0or1row" line 23)
    invoked from within
"db_0or1row select_permission_p {}"
    (procedure "permission::permission_p_not_cached" line 6)
    invoked from within
"permission::permission_p_not_cached -party_id $party_id -object_id $object_id -privilege $privilege"
    (procedure "permission_p" line 8)
    invoked from within
"permission_p -party_id $party_id -object_id $object_id -privilege $privilege"
    (procedure "permission::require_permission" line 7)
    invoked from within
"permission::require_permission -object_id [ad_conn object_id] -privilege read"
    invoked from within
"if {[string match "admin/*" [ad_conn extra_url]]} {
            permission::require_permission -object_id [ad_conn object_id] -privilege admin
        } else..."
    ("uplevel" body line 2)
    invoked from within
"uplevel $code"
    invoked from within
"ad_try {
        if {[string match "admin/*" [ad_conn extra_url]]} {
            permission::require_permission -object_id [ad_conn object_id] -privilege adm..."
    (procedure "rp_filter" line 162)
    invoked from within
"rp_filter preauth"
Collapse
Posted by Jamie Rasmussen on
I only skimmed the db code but noticed some nsv_exists and nsv_set calls.  Perhaps this is related to this AOLserver 4.0 bug that Andrew Piskorski submitted?  (Still unassigned.)
"[ 712241 ] Creating empty nsv fails in AOLserver 4"
http://sourceforge.net/tracker/index.php?func=detail&aid=712241&group_id=3152&atid=103152