Welcome! Log In Create A New Profile

Advanced

upstream reinit (API, Си)

rba
May 30, 2016 01:10AM
Здравствуйте, помогите пожалуйста разобраться...

Написал модуль, но т.к. не до конца понимаю некоторые механизмы nginx, после смены версии nginx, зависимостей и системы всё разумеется перестало работать.
Просьба в ngx_postgres не указывать, смотрел, там вроде несколько по другому.

Подозреваю кусок кода которые был переписан со следующего блокирующего образца:
do {
status = PQconnectPoll(conn);
} while(status != PGRES_POLLING_FAILED && status != PGRES_POLLING_OK);

О том как было переписано:
Комментарий об порядке вызовов
https://github.com/AntonRiab/ngx_pgcopy/blob/master/ngx_http_pgcopy_module.c#L482
Лог вызовов функций
https://github.com/AntonRiab/ngx_pgcopy/blob/master/reinit.log.xml

Правильно ли я понимаю: upstream_init из reinit уходит в глубокую рекурсию, переполняет стек и поэтому вываливается в segfault?

Куда корректно переместить повторные вызовы чтоб не уходить в рекурсию?
Или есть способ по другому вызвать reinit?
При том что таймер(pgcopy_PQconnectPoll_delay) почему то повторно не вызывается(даже после повторной установки).

Есть подозрение, что будет работать если вынести повторые вызовы в r->upstream->read_event_handler/write_event_handle, но тогда роль access_handler выпадает.
Subject Author Posted

upstream reinit (API, Си)

rba May 30, 2016 01:10AM

Re: upstream reinit (API, Си)

Aleksandr Sytar May 30, 2016 02:12AM

Re: upstream reinit (API, Си)

rba May 30, 2016 02:18AM

Re: upstream reinit (API, Си)

rba June 06, 2016 02:32AM

Re: upstream reinit (API, Си)

rba July 12, 2016 02:39AM

Re: upstream reinit (API, Си)

rba July 14, 2016 05:19AM

Re: upstream reinit (API, Си)

rba July 15, 2016 04:09AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 72
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready