Re: Does mod_perl/mod_??? need a hook called when a request/conn leaves the original worker thread?

2013-11-30 Thread Jeff Trawick
On Tue, Nov 26, 2013 at 3:17 PM, Jeff Trawick traw...@gmail.com wrote:

 On Tue, Nov 26, 2013 at 9:01 AM, Jeff Trawick traw...@gmail.com wrote:

 On Tue, Nov 26, 2013 at 8:55 AM, Graham Leggett minf...@sharp.fm wrote:

 On 26 Nov 2013, at 3:51 PM, Jeff Trawick traw...@gmail.com wrote:

  As it turns out (or, why didn't I refresh my understanding before),
 the MPM only knows about the conn_rec.
 
  * It could do extra work to learn about the request in order to pass
 the request to the new hook.
  * It could avoid that extra work for configurations that don't have a
 module that implements the hook.
 
  I'm leaning towards not having the MPM bother with any of that.  Such
 magic is well within the scope of a module that cares about detaching from
 the thread anyway.

 It would be nice if there was a clean and consistent way for
 c-output_filters to become r-output_filters, and when the request is
 cleaned up for the c-output_filters to be reverted back to what it was
 before.

 This way content and resource filters could take advantage of write
 completion in future.


 Interesting...  I don't know exactly what clean ... way will mean in
 this context, but I can look at early-request-hook+request-pool-cleanup
 processing to let the MPM track the current r for a connection.



 Regards,
 Graham
 --




 Here's a first draft for suspend/resume hooks:

 http://people.apache.org/~trawick/suspend_resume_hooks_r1.txt

 This maintains r inside the event MPM connection state.

 From a module that tries to log r-the_request when the connection is
 suspended or resumed:

 [pid 31968:139866574595840] suspend, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 [pid 31968:139866566203136] resume, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 [pid 31968:139866566203136] suspend, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 [pid 31968:139866557810432] resume, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 [pid 31968:139866557810432] suspend, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 [pid 31968:139866549417728] resume, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 ...
 [pid 31968:139866725664512] suspend, r 0

 (For detecting the end of the request or connection, the module needs to
 use a cleanup on the appropriate pool as always.)

 Todos (that I know of so far :) ):

 1. call the new hooks from places other than process_socket()


AFAICT, the other place where conn-specific* non-MPM code can run is in
pool cleanups, so resume may have to be called in a pre-cleanup, if the
conn is currently suspended.

*There are special callbacks handled by event[/eventopt] but they're not
associated with the client connection conn_rec so they are not the target
of the suspend/resume hooks.


 2. consider passing a coarse, non-MPM-specific, representation of the
 state on the hook calls


I didn't realize that the conn_rec already has a very fine-grained
representation of the state.  This state info is sufficient and, as it is
already part of the API, there's no concern at this point in creating a
coarse representation that is easier for multiple MPMs to maintain without
breaking the API when the MPM implementation changes.

-- 
Born in Roswell... married an alien...
http://emptyhammock.com/


Re: Does mod_perl/mod_??? need a hook called when a request/conn leaves the original worker thread?

2013-11-30 Thread Jeff Trawick
On Sat, Nov 30, 2013 at 10:03 AM, Jeff Trawick traw...@gmail.com wrote:

 On Tue, Nov 26, 2013 at 3:17 PM, Jeff Trawick traw...@gmail.com wrote:

 On Tue, Nov 26, 2013 at 9:01 AM, Jeff Trawick traw...@gmail.com wrote:

 On Tue, Nov 26, 2013 at 8:55 AM, Graham Leggett minf...@sharp.fmwrote:

 On 26 Nov 2013, at 3:51 PM, Jeff Trawick traw...@gmail.com wrote:

  As it turns out (or, why didn't I refresh my understanding before),
 the MPM only knows about the conn_rec.
 
  * It could do extra work to learn about the request in order to pass
 the request to the new hook.
  * It could avoid that extra work for configurations that don't have a
 module that implements the hook.
 
  I'm leaning towards not having the MPM bother with any of that.  Such
 magic is well within the scope of a module that cares about detaching from
 the thread anyway.

 It would be nice if there was a clean and consistent way for
 c-output_filters to become r-output_filters, and when the request is
 cleaned up for the c-output_filters to be reverted back to what it was
 before.

 This way content and resource filters could take advantage of write
 completion in future.


 Interesting...  I don't know exactly what clean ... way will mean in
 this context, but I can look at early-request-hook+request-pool-cleanup
 processing to let the MPM track the current r for a connection.



 Regards,
 Graham
 --




 Here's a first draft for suspend/resume hooks:

 http://people.apache.org/~trawick/suspend_resume_hooks_r1.txt

 This maintains r inside the event MPM connection state.

 From a module that tries to log r-the_request when the connection is
 suspended or resumed:

 [pid 31968:139866574595840] suspend, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 [pid 31968:139866566203136] resume, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 [pid 31968:139866566203136] suspend, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 [pid 31968:139866557810432] resume, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 [pid 31968:139866557810432] suspend, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 [pid 31968:139866549417728] resume, r 7f3530002970 GET
 /ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
 ...
 [pid 31968:139866725664512] suspend, r 0

 (For detecting the end of the request or connection, the module needs to
 use a cleanup on the appropriate pool as always.)

 Todos (that I know of so far :) ):

 1. call the new hooks from places other than process_socket()


 AFAICT, the other place where conn-specific* non-MPM code can run is in
 pool cleanups, so resume may have to be called in a pre-cleanup, if the
 conn is currently suspended.

 *There are special callbacks handled by event[/eventopt] but they're not
 associated with the client connection conn_rec so they are not the target
 of the suspend/resume hooks.


 2. consider passing a coarse, non-MPM-specific, representation of the
 state on the hook calls


 I didn't realize that the conn_rec already has a very fine-grained
 representation of the state.  This state info is sufficient and, as it is
 already part of the API, there's no concern at this point in creating a
 coarse representation that is easier for multiple MPMs to maintain without
 breaking the API when the MPM implementation changes.


Implemented for Event in  r1546759; I'll implement for eventopt before
long; it would be great if Event-savvy folks would take a look ;)

-- 
Born in Roswell... married an alien...
http://emptyhammock.com/


Re: Does mod_perl/mod_??? need a hook called when a request/conn leaves the original worker thread?

2013-11-26 Thread Jeff Trawick
On Mon, Nov 18, 2013 at 12:15 PM, Eric Covener cove...@gmail.com wrote:

 On Mon, Nov 18, 2013 at 10:58 AM, Jeff Trawick traw...@gmail.com wrote:
  For the mod_perl crash with Event that I posted at the URL below, I would
  suspect that there's some affinity with the original worker thread.  Can
  anyone in mod_perl land confirm?
 
 
 http://mail-archives.apache.org/mod_mbox/perl-dev/201311.mbox/%3CCAKUrXK6C3R_F3NdA%2BJUGYOqppvnoQJLTGQ9%2BA916vuMb0g9dig%40mail.gmail.com%3E
 
  I'm also aware of a third-party diagnostic module that could use a hint,
 and
  in general I wonder if anyone knows of specific interface requirements
 that
  would need to be provided by a new hook for indicating when a connection
 or
  request leaves the original thread or is handled by a new one.

 I can't see any need for more than request_rec on both ends.


As it turns out (or, why didn't I refresh my understanding before), the MPM
only knows about the conn_rec.

* It could do extra work to learn about the request in order to pass the
request to the new hook.
* It could avoid that extra work for configurations that don't have a
module that implements the hook.

I'm leaning towards not having the MPM bother with any of that.  Such magic
is well within the scope of a module that cares about detaching from the
thread anyway.

-- 
Born in Roswell... married an alien...
http://emptyhammock.com/


Re: Does mod_perl/mod_??? need a hook called when a request/conn leaves the original worker thread?

2013-11-26 Thread Graham Leggett
On 26 Nov 2013, at 3:51 PM, Jeff Trawick traw...@gmail.com wrote:

 As it turns out (or, why didn't I refresh my understanding before), the MPM 
 only knows about the conn_rec.
 
 * It could do extra work to learn about the request in order to pass the 
 request to the new hook.
 * It could avoid that extra work for configurations that don't have a module 
 that implements the hook.
 
 I'm leaning towards not having the MPM bother with any of that.  Such magic 
 is well within the scope of a module that cares about detaching from the 
 thread anyway.

It would be nice if there was a clean and consistent way for c-output_filters 
to become r-output_filters, and when the request is cleaned up for the 
c-output_filters to be reverted back to what it was before.

This way content and resource filters could take advantage of write completion 
in future.

Regards,
Graham
--



Re: Does mod_perl/mod_??? need a hook called when a request/conn leaves the original worker thread?

2013-11-26 Thread Jeff Trawick
On Tue, Nov 26, 2013 at 8:55 AM, Graham Leggett minf...@sharp.fm wrote:

 On 26 Nov 2013, at 3:51 PM, Jeff Trawick traw...@gmail.com wrote:

  As it turns out (or, why didn't I refresh my understanding before), the
 MPM only knows about the conn_rec.
 
  * It could do extra work to learn about the request in order to pass the
 request to the new hook.
  * It could avoid that extra work for configurations that don't have a
 module that implements the hook.
 
  I'm leaning towards not having the MPM bother with any of that.  Such
 magic is well within the scope of a module that cares about detaching from
 the thread anyway.

 It would be nice if there was a clean and consistent way for
 c-output_filters to become r-output_filters, and when the request is
 cleaned up for the c-output_filters to be reverted back to what it was
 before.

 This way content and resource filters could take advantage of write
 completion in future.


Interesting...  I don't know exactly what clean ... way will mean in this
context, but I can look at early-request-hook+request-pool-cleanup
processing to let the MPM track the current r for a connection.



 Regards,
 Graham
 --




-- 
Born in Roswell... married an alien...
http://emptyhammock.com/


Re: Does mod_perl/mod_??? need a hook called when a request/conn leaves the original worker thread?

2013-11-26 Thread Jeff Trawick
On Tue, Nov 26, 2013 at 9:01 AM, Jeff Trawick traw...@gmail.com wrote:

 On Tue, Nov 26, 2013 at 8:55 AM, Graham Leggett minf...@sharp.fm wrote:

 On 26 Nov 2013, at 3:51 PM, Jeff Trawick traw...@gmail.com wrote:

  As it turns out (or, why didn't I refresh my understanding before), the
 MPM only knows about the conn_rec.
 
  * It could do extra work to learn about the request in order to pass
 the request to the new hook.
  * It could avoid that extra work for configurations that don't have a
 module that implements the hook.
 
  I'm leaning towards not having the MPM bother with any of that.  Such
 magic is well within the scope of a module that cares about detaching from
 the thread anyway.

 It would be nice if there was a clean and consistent way for
 c-output_filters to become r-output_filters, and when the request is
 cleaned up for the c-output_filters to be reverted back to what it was
 before.

 This way content and resource filters could take advantage of write
 completion in future.


 Interesting...  I don't know exactly what clean ... way will mean in
 this context, but I can look at early-request-hook+request-pool-cleanup
 processing to let the MPM track the current r for a connection.



 Regards,
 Graham
 --




Here's a first draft for suspend/resume hooks:

http://people.apache.org/~trawick/suspend_resume_hooks_r1.txt

This maintains r inside the event MPM connection state.

From a module that tries to log r-the_request when the connection is
suspended or resumed:

[pid 31968:139866574595840] suspend, r 7f3530002970 GET
/ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
[pid 31968:139866566203136] resume, r 7f3530002970 GET
/ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
[pid 31968:139866566203136] suspend, r 7f3530002970 GET
/ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
[pid 31968:139866557810432] resume, r 7f3530002970 GET
/ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
[pid 31968:139866557810432] suspend, r 7f3530002970 GET
/ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
[pid 31968:139866549417728] resume, r 7f3530002970 GET
/ubuntu-12.04.3-desktop-i386.iso HTTP/1.1
...
[pid 31968:139866725664512] suspend, r 0

(For detecting the end of the request or connection, the module needs to
use a cleanup on the appropriate pool as always.)

Todos (that I know of so far :) ):

1. call the new hooks from places other than process_socket()
2. consider passing a coarse, non-MPM-specific, representation of the state
on the hook calls

-- 
Born in Roswell... married an alien...
http://emptyhammock.com/


Does mod_perl/mod_??? need a hook called when a request/conn leaves the original worker thread?

2013-11-18 Thread Jeff Trawick
For the mod_perl crash with Event that I posted at the URL below, I would
suspect that there's some affinity with the original worker thread.  Can
anyone in mod_perl land confirm?

http://mail-archives.apache.org/mod_mbox/perl-dev/201311.mbox/%3CCAKUrXK6C3R_F3NdA%2BJUGYOqppvnoQJLTGQ9%2BA916vuMb0g9dig%40mail.gmail.com%3E

I'm also aware of a third-party diagnostic module that could use a hint,
and in general I wonder if anyone knows of specific interface requirements
that would need to be provided by a new hook for indicating when a
connection or request leaves the original thread or is handled by a new one.
-- 
Born in Roswell... married an alien...
http://emptyhammock.com/


Re: Does mod_perl/mod_??? need a hook called when a request/conn leaves the original worker thread?

2013-11-18 Thread Eric Covener
On Mon, Nov 18, 2013 at 10:58 AM, Jeff Trawick traw...@gmail.com wrote:
 For the mod_perl crash with Event that I posted at the URL below, I would
 suspect that there's some affinity with the original worker thread.  Can
 anyone in mod_perl land confirm?

 http://mail-archives.apache.org/mod_mbox/perl-dev/201311.mbox/%3CCAKUrXK6C3R_F3NdA%2BJUGYOqppvnoQJLTGQ9%2BA916vuMb0g9dig%40mail.gmail.com%3E

 I'm also aware of a third-party diagnostic module that could use a hint, and
 in general I wonder if anyone knows of specific interface requirements that
 would need to be provided by a new hook for indicating when a connection or
 request leaves the original thread or is handled by a new one.

I can't see any need for more than request_rec on both ends.


Re: Does mod_perl/mod_??? need a hook called when a request/conn leaves the original worker thread?

2013-11-18 Thread Jim Jagielski

On Nov 18, 2013, at 12:15 PM, Eric Covener cove...@gmail.com wrote:

 On Mon, Nov 18, 2013 at 10:58 AM, Jeff Trawick traw...@gmail.com wrote:
 For the mod_perl crash with Event that I posted at the URL below, I would
 suspect that there's some affinity with the original worker thread.  Can
 anyone in mod_perl land confirm?
 
 http://mail-archives.apache.org/mod_mbox/perl-dev/201311.mbox/%3CCAKUrXK6C3R_F3NdA%2BJUGYOqppvnoQJLTGQ9%2BA916vuMb0g9dig%40mail.gmail.com%3E
 
 I'm also aware of a third-party diagnostic module that could use a hint, and
 in general I wonder if anyone knows of specific interface requirements that
 would need to be provided by a new hook for indicating when a connection or
 request leaves the original thread or is handled by a new one.
 
 I can't see any need for more than request_rec on both ends.
 

mod_spdy uses a fake conn_rec, well, more like a sub-conn_rec
ala a subrequest, which is also sometimes called a slave
connection... I'm thinking that maybe having such an entity
here would be best, long term.

Re: Does mod_perl/mod_??? need a hook called when a request/conn leaves the original worker thread?

2013-11-18 Thread Jeff Trawick
Ouch, I meant to sent this to dev@perl instead of dev@apr...

On Mon, Nov 18, 2013 at 10:58 AM, Jeff Trawick traw...@gmail.com wrote:

 For the mod_perl crash with Event that I posted at the URL below, I would
 suspect that there's some affinity with the original worker thread.  Can
 anyone in mod_perl land confirm?


 http://mail-archives.apache.org/mod_mbox/perl-dev/201311.mbox/%3CCAKUrXK6C3R_F3NdA%2BJUGYOqppvnoQJLTGQ9%2BA916vuMb0g9dig%40mail.gmail.com%3E

 I'm also aware of a third-party diagnostic module that could use a hint,
 and in general I wonder if anyone knows of specific interface requirements
 that would need to be provided by a new hook for indicating when a
 connection or request leaves the original thread or is handled by a new one.
 --
 Born in Roswell... married an alien...
 http://emptyhammock.com/




-- 
Born in Roswell... married an alien...
http://emptyhammock.com/