<div dir="ltr">Yichun, thanks for your notes.<div>Even though they are not as optimistic as I would like them to be :).<div><br></div><div>--</div><div>Marat<br><div><br></div><div><br></div><div class="gmail_extra"><br><br>
<div class="gmail_quote">On Thu, Jul 4, 2013 at 12:00 AM, Yichun Zhang (agentzh) <span dir="ltr"><<a href="mailto:agentzh@gmail.com" target="_blank">agentzh@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello!<br>
<div class="im"><br>
On Wed, Jul 3, 2013 at 6:17 AM, Marat Dakota wrote:<br>
> Are there any adequately hardcore methods to close subrequest's connection?<br>
> I mean, what steps should be done internally?<br>
><br>
<br>
</div>I was also thinking hard about this problem when I was implementing<br>
the "light thread" model in our ngx_lua module.<br>
<br>
The subrequest mechanism does not know the details of the target<br>
location's handlers. The target location's handler may introduce<br>
multiple upstream connections. It's not safe at all to assume any<br>
thing here.<br>
<br>
A possible work-around here is to actively call the cleanup handlers<br>
registered by the subrequest. But unfortunately, the cleanup handlers<br>
are registered into the main request, it's not easy to distinguish a<br>
specific subrequest's cleanup handlers from others. Another challenge<br>
here is that the subrequest is sharing the same memory pool with its<br>
ancestors, so freeing up all the memory associated with the subrequest<br>
is not possible.<br>
<br>
To conclude, it's not easy to abort a pending subrequest without<br>
aborting the main request. And I also decide to throw out an error in<br>
my ngx_lua module when the user Lua code is trying to abort a "light<br>
thread" with a pending subrequest.<br>
<div class="im"><br>
> For now, I'm just setting a flag in subrequest's context and just ignoring<br>
> the data in subrequest's body filter depending on this flag. It is ok, but<br>
> if there is a relatively simple way to close the connection to avoid<br>
> meaningless data transfers and meaningless waits for subrequest to be<br>
> finished — it would be nice.<br>
><br>
<br>
</div>See above :)<br>
<br>
Best regards,<br>
-agentzh<br>
<div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
nginx-devel mailing list<br>
<a href="mailto:nginx-devel@nginx.org">nginx-devel@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-devel" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-devel</a></div></div></blockquote></div><br></div></div></div></div>