aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2012-06-18 14:23:42 +0000
committerMaxim Dounin <mdounin@mdounin.ru>2012-06-18 14:23:42 +0000
commit29844cd55c921efc99e75f40db70d7c2dbe6cdad (patch)
treeb6fae228f90def31afb382baebb3e54f4c04a59e /src
parent91c654debc86b584b0d33ff8b30513105c8e5283 (diff)
downloadnginx-29844cd55c921efc99e75f40db70d7c2dbe6cdad.tar.gz
nginx-29844cd55c921efc99e75f40db70d7c2dbe6cdad.zip
Upstream keepalive: "single" parameter deprecated.
The original idea was to optimize edge cases in case of interchangeable backends, i.e. don't establish a new connection if we have any one cached. This causes more harm than good though, as it screws up underlying balancer's idea about backends used and may result in various unexpected problems.
Diffstat (limited to 'src')
-rw-r--r--src/http/modules/ngx_http_upstream_keepalive_module.c33
1 files changed, 4 insertions, 29 deletions
diff --git a/src/http/modules/ngx_http_upstream_keepalive_module.c b/src/http/modules/ngx_http_upstream_keepalive_module.c
index 6fd9ac70a..d10e3d016 100644
--- a/src/http/modules/ngx_http_upstream_keepalive_module.c
+++ b/src/http/modules/ngx_http_upstream_keepalive_module.c
@@ -12,7 +12,6 @@
typedef struct {
ngx_uint_t max_cached;
- ngx_uint_t single; /* unsigned:1 */
ngx_queue_t cache;
ngx_queue_t free;
@@ -223,36 +222,11 @@ ngx_http_upstream_get_keepalive_peer(ngx_peer_connection_t *pc, void *data)
kp->failed = 0;
- /* single pool of cached connections */
-
- if (kp->conf->single && !ngx_queue_empty(&kp->conf->cache)) {
-
- q = ngx_queue_head(&kp->conf->cache);
-
- item = ngx_queue_data(q, ngx_http_upstream_keepalive_cache_t, queue);
- c = item->connection;
-
- ngx_queue_remove(q);
- ngx_queue_insert_head(&kp->conf->free, q);
-
- ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
- "get keepalive peer: using connection %p", c);
-
- c->idle = 0;
- c->log = pc->log;
- c->read->log = pc->log;
- c->write->log = pc->log;
- c->pool->log = pc->log;
-
- pc->connection = c;
- pc->cached = 1;
-
- return NGX_DONE;
- }
+ /* ask balancer */
rc = kp->original_get_peer(pc, kp->data);
- if (kp->conf->single || rc != NGX_OK) {
+ if (rc != NGX_OK) {
return rc;
}
@@ -552,7 +526,8 @@ ngx_http_upstream_keepalive(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
for (i = 2; i < cf->args->nelts; i++) {
if (ngx_strcmp(value[i].data, "single") == 0) {
- kcf->single = 1;
+ ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
+ "the \"single\" parameter is deprecated");
continue;
}