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

Posted by Andrew Piskorski on
Brian, do you have the DebugP or LogDebugP ACS Kernel parameters set to true? If so, turn them off, and those Notice messages from rp_handler should go away.

tcl_url2file is a per-thread global array variable, so given that you get it that "no such variable" error at all, getting it more than once makes sense. AFAICT, tcl_url2file is only used 3 times total anywhere in the OpenACS code, all of them in rp_handler. And there, the ONLY time it is read from, is inside a catch. However, it does call rp_debug with any of the error messages caught, which logs the Tcl error as a Notice (not an Error), but only if the DebugP or parameters were true at NaviServer startup time. (If they were false, the rp_debug proc is defined to do nothing.)

Gustaf made some fixes to that rp_handler code in 2016 and 2017, but it looks like the same basic design, including the catch, had been present at least since OpenACS 5.2.3 10+ years ago, and probably longer than that. I don't understand why rp_handle is (apparently) designed to rely upon that catch, but it's been that way a long time.