Forum OpenACS Q&A: Re: error in rp_handler: can't read "tcl_url2file

Collapse
Posted by Brian Fenton on
Thanks Andrew, I appreciate the response.

The error happens even when DebugP or LogDebugP parameters are false. This is because the call to rp_debug forces the debug_p parameter to "t" i.e.
rp_debug -debug t "error in rp_handler: $errmsg"

Thanks for explaining that tcl_url2file is per-thread - I suspected something like that was going on. Makes you wonder if global array was the best choice for something like this. But at least I understand now that those errors are not necessarily a problem.

The problem we've been looking into is in the interaction of the PerformanceModeP and the "wizard" (see https://openacs.org/api-doc/proc-view?proc=template::wizard::create&source_p=1 ). I'm still trying to fully understand it, but it appears that the wizard is doing some kind of internal redirect that messes up the PerformanceModeP caching, and sometimes the form submission doesn't advance to the next page.

My issue now is that our clients claim they see a marked improvement in performance with PerformanceModeP switched on, so it's not as simple as just switching it off.

Brian

Collapse
Posted by Andrew Piskorski on
The error happens even when DebugP or LogDebugP parameters are false. This is because the call to rp_debug forces the debug_p parameter to "t" i.e. rp_debug -debug t "error in rp_handler: $errmsg"
No, I don't think so. (Did you actually try it?) Because when the DebugP or LogDebugP parameters are false at server startup time, the rp_debug proc literally does nothing - it is defined to immediately return. From reading the code, what you are talking about with "rp_debug -debug t" only applies when NaviServer was started up with one of the DebugP or LogDebugP parameters set to true.

Btw, I don't personally like this style of conditionally defining entirely different procedure definitions. But in this case, maybe it was done for performance.

Collapse
Posted by Brian Fenton on
Hi Andrew

sorry I should apologise. I'm running a much older version of OpenACS where the rp_debug proc isn't defined conditionally. That explains the confusion. I should have checked that the latest version had changed.

Brian