On Fri, 2009-03-27 at 09:56 +0100, Gustaf Neumann wrote:
> Andrew Steets schrieb:
> > As Scott suggested, we should probably log everything, at least for
> > some reasonable value of "everything."  Even if you switch the access
> > log trace to the cleanup callback, you still don't get access entries
> > for clients who connect but don't issue a well formed HTTP request.  I
> > don't have a huge problem with that, and I think it would be difficult
> > to log those types of events.
> >   
> i am as well in favor of loging the adp_aborts, since this seems a used 
> idiom.
> There is no advantage in omitting such entries in the log file, but it 
> might be
> hard to figure out what happens without that. 
> 
> For example, in our production system, we use nginx, which logs these
> requests on its own. A problem show up, when we try to debug a situation,
> where some requests present in the nginx log are missing in the 
> aolserver log.


Hey,

I just looked up some old manpage entries for ns_adp_abort.

Here is my copy: http://rmadilo.com/files/nsapi/ns_adp_abort.html

In short, ns_adp_abort is supposed to work just like ns_tcl_abort.

It should not have any effect on logging, so there must be a bug in the
current implementation. My guess is that it skips too much stuff,
including trace filters, etc. But reading the manpage, I don't see any
requirement to log anything either. 

Basically this is to allow a deep unwind of ADP processing which doesn't
require a [catch]. Here's what the manpage says:


ns_adp_abort

Stop processing of ADP and throw away all output. 

Syntax

ns_adp_abort ?return_value?

Description

This function aborts processing of the ADP file and any pending output
up to that point is deleted. However, if a streaming script was
processed before ns_adp_abort was called, the data will already have
been output. Also, if any functions that cause output (such as ns_return
or ns_write) were called before ns_adp_abort, their output will already
have been output also. 

ns_adp_abort closes the connection without returning an empty HTML page.
Every ns_returnxxx call in an ADP should be followed with a call to
ns_adp_abort.

The return_value, if specified, becomes the return value of the ADP.

Note that this function returns all the way up the call stack. For
example, suppose a.adp includes b.adp which includes c.adp, and c.adp
calls ns_adp_abort. No code in b.adp or a.adp after the includes will be
executed. You can get around this in one of two ways:

* You can execute these calls in a.adp and b.adp, respectively:

catch {ns_adp_include b.adp} retval
catch {ns_adp_include c.adp} retval

* Or, you can execute this call in c.adp:

ns_adp_return ?retval?

The ns_adp_return function returns up only one level.


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

Reply via email to