Nginx Timer is killing my request pool

Tigran Bayburtsyan tigran.bayburtsyan at gmail.com
Sun Feb 22 08:21:52 UTC 2015


Hi.
I can't find out why Nginx calling ngx_http_free_request  function after
ngx_add_timer , if I'm not calling ngx_http_finalize_request
or something relevant ?
Should I do something to keep request in memory ?

Thanks.

2015-02-22 1:28 GMT+04:00 Tigran Bayburtsyan <tigran.bayburtsyan at gmail.com>:

> Ok I sow that code during debugging Nginx request , but why my request is
> freeing if I'm not calling ngx_http_finalize_request ?
> What should I do to keep my request alive ?
>
> Thanks.
>
> 2015-02-22 1:23 GMT+04:00 tommy watson <tommywatson+nginx-devel at gmail.com>
> :
>
>> My money is on your request has been cleaned up
>> in ngx_http_free_request():
>>
>>
>> https://github.com/nginx/nginx/blob/master/src/http/ngx_http_request.c#L3493
>>
>> On Sat, Feb 21, 2015 at 3:19 PM, Tigran Bayburtsyan <
>> tigran.bayburtsyan at gmail.com> wrote:
>>
>>> No this time I'm trying to do it with separate process by just sharing
>>> memory between Nginx worker and my 3rd party excusable...
>>> I'm making ngx_timer to send data when it will be received from shared
>>> memory.
>>>
>>> It works fine, but I can't figure out why my r->pool is null ?
>>>
>>> I'm using Nginx 1.7 version.
>>> Thanks for your help.
>>>
>>>
>>> 2015-02-22 1:02 GMT+04:00 tommy watson <
>>> tommywatson+nginx-devel at gmail.com>:
>>>
>>>> Tigran,
>>>>   are you still using fork() ? As you describe here:
>>>> http://mailman.nginx.org/pipermail/nginx-devel/2015-February/006554.html
>>>>
>>>>  If so, as already explained, the other process is probably closing
>>>> your request.
>>>>
>>>> Cheers.
>>>>
>>>>
>>>> On Sat, Feb 21, 2015 at 2:55 PM, Tigran Bayburtsyan <
>>>> tigran.bayburtsyan at gmail.com> wrote:
>>>>
>>>>> Hi All.
>>>>>
>>>>> I've created a function for adding my custom ngx_timer , but after 1st
>>>>> time loop my r->pool is setting to NULL , also it sets NULL my
>>>>> r->connection->log, and after second loop it throws exception on  *ngx_palloc
>>>>> *because my r->pool is NULL.
>>>>> I can't find out why, here is my function
>>>>>
>>>>> *void add_aling_event(ngx_event_t *e, ngx_http_request_t *r, void
>>>>> (*handler), int timer)*
>>>>> *{*
>>>>> *    if(e)*
>>>>> *    {*
>>>>> *        ngx_add_timer(e, timer);*
>>>>> *        return;*
>>>>> *    }*
>>>>> *    ngx_event_t *event=ngx_palloc(r->pool,sizeof(ngx_event_t));*
>>>>> *    memset(event,0,sizeof(ngx_event_t));*
>>>>> *    event->data=r;*
>>>>> *    event->handler=handler;*
>>>>> *    event->log=r->connection->log;*
>>>>> *    ngx_add_timer(event, timer);*
>>>>> *}*
>>>>>
>>>>> And I'm calling this function like this.
>>>>>
>>>>> static ngx_int_t ngx_http_aling_handler(ngx_http_request_t *r)
>>>>> {
>>>>>     ........
>>>>>     ........
>>>>>     add_aling_event(NULL, r, hack_func, 50);
>>>>>     return NGX_AGAIN;
>>>>> }
>>>>>
>>>>> void hack_func(ngx_event_t *e)
>>>>> {
>>>>>     ngx_http_request_t *r = e->data;
>>>>>     ........
>>>>>     ........
>>>>>
>>>>>     switch(shmLen[1])
>>>>>     {
>>>>>         case 1: // adding chain
>>>>>         {
>>>>>             ..........................
>>>>> *            ..........................*
>>>>>         };break;
>>>>>         case 2: // adding last chain
>>>>>         {
>>>>>             ..........................
>>>>> *            ..........................*
>>>>>         };break;
>>>>>         default:
>>>>>         {
>>>>>             add_aling_event(e, r, hack_func, 50);
>>>>>         };break;
>>>>>     }
>>>>> }
>>>>>
>>>>> After 1 or 2 calls r->pool is sets to NULL .....
>>>>>
>>>>> Please help me figure out this issue.
>>>>> Maybe I'm doing something wrong.
>>>>> I've did this code using example here
>>>>> https://github.com/tommywatson/nginx-hello-world-module/blob/master/ngx_http_hello_world_module.c#L104
>>>>>
>>>>>
>>>>> Thanks.
>>>>>
>>>>> _______________________________________________
>>>>> nginx-devel mailing list
>>>>> nginx-devel at nginx.org
>>>>> http://mailman.nginx.org/mailman/listinfo/nginx-devel
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> nginx-devel mailing list
>>>> nginx-devel at nginx.org
>>>> http://mailman.nginx.org/mailman/listinfo/nginx-devel
>>>>
>>>
>>>
>>> _______________________________________________
>>> nginx-devel mailing list
>>> nginx-devel at nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-devel
>>>
>>
>>
>> _______________________________________________
>> nginx-devel mailing list
>> nginx-devel at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-devel
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20150222/451b95f9/attachment-0001.html>


More information about the nginx-devel mailing list