[PATCH] memcached_force_ranges for memcached upstream
Roman Arutyunyan
arut at nginx.com
Tue Apr 21 14:37:42 UTC 2015
On Tue, Apr 21, 2015 at 04:29:32PM +0200, Martin Mlynář wrote:
> Hello,
>
> Dne 2015-04-21 15:53, Roman Arutyunyan napsal:
> >Hello,
> >
> >On Tue, Apr 21, 2015 at 03:45:12PM +0200, Martin Mlynář wrote:
> >>Hello,
> >>
> >>Dne 2015-04-21 15:39, Roman Arutyunyan napsal:
> >>>Hello!
> >>>
> >>>On Tue, Apr 21, 2015 at 01:37:52PM +0200, Martin Mlynář wrote:
> >>>># HG changeset patch
> >>>># User Martin Mlynář <nexus at smoula.net>
> >>>># Date 1429613281 -7200
> >>>># Tue Apr 21 12:48:01 2015 +0200
> >>>># Node ID 4cb149154501fc638596ab51031f8b3b64da2a7f
> >>>># Parent 1bdfceda86a99a4dc99934181d2f9e2632003ca8
> >>>>memcached_force_ranges for memcached upstream
> >>>>
> >>>>Allow option force_ranges for memcached upstream
> >>>>
> >>>>diff -r 1bdfceda86a9 -r 4cb149154501
> >>>>src/http/modules/ngx_http_memcached_module.c
> >>>>--- a/src/http/modules/ngx_http_memcached_module.c Mon Apr 20 17:36:51
> >>>>2015 +0300
> >>>>+++ b/src/http/modules/ngx_http_memcached_module.c Tue Apr 21 12:48:01
> >>>>2015 +0200
> >>>>@@ -95,6 +95,13 @@
> >>>> offsetof(ngx_http_memcached_loc_conf_t, upstream.read_timeout),
> >>>> NULL },
> >>>>
> >>>>+ { ngx_string("memcached_force_ranges"),
> >>>>+
> >>>>NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
> >>>>+ ngx_conf_set_flag_slot,
> >>>>+ NGX_HTTP_LOC_CONF_OFFSET,
> >>>>+ offsetof(ngx_http_memcached_loc_conf_t, upstream.force_ranges),
> >>>>+ NULL },
> >>>>+
> >>>> { ngx_string("memcached_next_upstream"),
> >>>>NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
> >>>> ngx_conf_set_bitmask_slot,
> >>>>@@ -604,6 +611,7 @@
> >>>> conf->upstream.next_upstream_timeout = NGX_CONF_UNSET_MSEC;
> >>>>
> >>>> conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE;
> >>>>+ conf->upstream.force_ranges = NGX_CONF_UNSET;
> >>>>
> >>>> /* the hardcoded values */
> >>>> conf->upstream.cyclic_temp_file = 0;
> >>>>@@ -647,6 +655,9 @@
> >>>> ngx_conf_merge_msec_value(conf->upstream.read_timeout,
> >>>> prev->upstream.read_timeout, 60000);
> >>>>
> >>>>+ ngx_conf_merge_value(conf->upstream.force_ranges,
> >>>>+ prev->upstream.force_ranges, 0);
> >>>>+
> >>>> ngx_conf_merge_msec_value(conf->upstream.next_upstream_timeout,
> >>>> prev->upstream.next_upstream_timeout, 0);
> >>>
> >>>It's better to enable ranges in the memcached module without any
> >>>directives.
> >>>You can find such "hardcoded values" in
> >>>ngx_http_memcached_create_loc_conf().
> >>
> >>I've tried to be consistent with other modules which does it this way
> >>like:
> >>
> >>ngx_http_proxy_module.c
> >>ngx_http_scgi_module.c
> >>ngx_http_uwsgi_module.c
> >>ngx_http_fastcgi_module.c
> >>
> >>Is there any reason why memcached should be an exception? Or am I
> >>getting
> >>something wrong?
> >
> >As you can see, the memcached module is an exception for many settings.
> >
> >As for ranges, memcache backend cannot apply ranges, so nginx is the only
> >option. With other upstream modules nginx tries to be consistent with the
> >origin server behavior.
>
> Thank you for your explanation. I expect according to the policy you've
> mentioned
> change like this can not be accepted to upstream. Am I right?
Yes. We'll accept a simpler patch with the hardcoded setting.
--
Roman Arutyunyan
More information about the nginx-devel
mailing list