Keep application worker until response for all requests received.

This commit is contained in:
Max Romanov
2017-10-19 17:37:26 +03:00
parent b3aab8c66f
commit fc6520d722

View File

@@ -2644,6 +2644,7 @@ nxt_router_app_port_release(nxt_task_t *task, nxt_port_t *port,
{ {
int use_delta, ra_use_delta; int use_delta, ra_use_delta;
nxt_app_t *app; nxt_app_t *app;
nxt_bool_t send_quit;
nxt_queue_link_t *lnk; nxt_queue_link_t *lnk;
nxt_req_app_link_t *ra; nxt_req_app_link_t *ra;
@@ -2688,6 +2689,8 @@ nxt_router_app_port_release(nxt_task_t *task, nxt_port_t *port,
ra_use_delta = 0; ra_use_delta = 0;
} }
send_quit = app->live == 0 && port->app_requests == port->app_responses;
nxt_thread_mutex_unlock(&app->mutex); nxt_thread_mutex_unlock(&app->mutex);
if (ra != NULL) { if (ra != NULL) {
@@ -2706,7 +2709,7 @@ nxt_router_app_port_release(nxt_task_t *task, nxt_port_t *port,
goto adjust_use; goto adjust_use;
} }
if (app->live == 0) { if (send_quit) {
nxt_debug(task, "app '%V' %p is not alive, send QUIT to port", nxt_debug(task, "app '%V' %p is not alive, send QUIT to port",
&app->name, app); &app->name, app);