Nginx thread pool is not working in 1.14 in custom module
isolomka
nginx-forum at forum.nginx.org
Wed May 23 13:08:08 UTC 2018
Thanks for the response.
The main issue is that now request is closed before actual task is done in
thread pool.
How can I avoid that?
It worked fine before the upgrade.
What is correct thread pool usage in custom module in 1.14?
Here is my request handler for reference:
static ngx_int_t ngx_http_thread_handler(ngx_http_request_t* r)
{
//...
// Add handler (blocking handler)
task->handler = ngx_http_cgpi_task_handler;
// Init event
task->event.data = taskCtx;
task->event.handler = ngx_http_cgpi_task_done_cb;
// Try to get the pool to put task
ngx_thread_pool_t* tp = clcf->thread_pool;
if (tp == NULL)
{
// Create pool if not exists
if (ngx_http_complex_value(r, clcf->thread_pool_value, &name) !=
NGX_OK)
{
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
"ngx_http_complex_value \"%V\" failed", &name);
return NGX_ERROR;
}
tp = ngx_thread_pool_get((ngx_cycle_t* ) ngx_cycle, &name);
if (tp == NULL)
{
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "thread pool \"%V\"
not found", &name);
return NGX_ERROR;
}
}
// Put the task into thread pool
if (ngx_thread_task_post(tp, task) != NGX_OK)
{
return NGX_ERROR;
}
// Make the request blocked
r->main->blocked++;
r->aio = 1;
return NGX_AGAIN;
}
Posted at Nginx Forum: https://forum.nginx.org/read.php?2,279917,279920#msg-279920
More information about the nginx
mailing list