Maybe there is an error which is silently caught in ns_adp_parse. Try this before sourcing your adp:
ns_adp_ctl stricterror 1 tom jackson On Fri, 2009-05-29 at 14:48 +0000, Francesco Petrarch wrote: > I appear to be having a problem with ns_adp_parse and ns_adp_eval. I > currently run the latest code 4.5.1, upgraded from 3.13 with Jerry > Asher's patches for unix sockets for multiple hosts. Everything > worked fine on 3.13 but now I have intermittent issues with 4.5.1 (I > had acutally upgraded in November and have the issue with all 4.5 > updates since then). > > My website serves about 140 million requests a month, about 3 million > of those are .html requests. > I don't use ACS, everything is custom coded and my CMS is based on the > following filter: > > > ns_register_filter preauth GET /*.html decode_url > ns_register_filter preauth POST /*.html decode_url > proc decode_url { why } { > ns_return 200 "text/html" [ns_adp_parse > -file /www/website/template.adp] > return filter_return > } > > > Essentially, every .html page goes through this filter, and the > file /www/website/template.adp is a graphical template/layout for the > site and dynamically includes the content for the give [ns_conn url]. > As I mentioned this worked fine for 3.13 > > However, seemly at random times (for a random connection), > [ns_adp_parse -file /www/website/template.adp] will return an empty > string. I have modified the filter to reattempt the ns_adp_parse if > the returned value was an empty string (ie: [string length $page]==0) > and logged the progress, but on a connection where ns_adp_parse > returns the empty string it appears to always return an empty string. > ns_adp_eval also returns an empty string when this happens. With the > above filter the visitor to the website would see just a blank screen > because of course the content was just "". To be exact here, I say > empty string, to be more accurate it returns $page where [string > length $page]==0 > > My current little fix is this: > > > ns_register_filter preauth GET /*.html decode_url > ns_register_filter preauth POST /*.html decode_url > proc decode_url { why } { > set page [ns_adp_parse -file /www/website/template.adp] > set size [string length $page] > if {$size==0} { > ns_log notice "Page [ns_conn url] ns_adp_parse $size in size for > visitor from [ns_conn peeraddr]" > set page "<body onload='window.location.reload()'>" > } > ns_return 200 "text/html" $page > return filter_return > } > > > As you can see, not so much a fix as just creating a little javascript > to reload the page. At least the visitor to the website is no longer > presented with a blank page, but not as ideal as an actual fix to the > empty string issue. > > I have thought that this may be an issue with threads or some limit > with handles to databases or maybe the adp parser (I really don't know > how that works). However, given that this issue was not present on > 3.13, and no errors are generated I am at a loss. I have also tried > messing with the config, changing just about everything to see if it > made any difference, it didn't. > > I will be continuing to try and debug this to confirm > that /www/website/template.adp is being parsed and so on, but before I > got too involved I figured I'd try this list to see if anyone knows of > similar issues. > > Thanks for your help, > > _Peter > > > > ______________________________________________________________________ > Create a cool, new character for your Windows Liveā¢ Messenger. Check > it out > > -- > AOLserver - http://www.aolserver.com/ > > > > To Remove yourself from this list, simply send an email to > <lists...@listserv.aol.com> with the > body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: > field of your email blank. > > -- AOLserver - http://www.aolserver.com/ To Remove yourself from this list, simply send an email to <lists...@listserv.aol.com> with the body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of your email blank.