Is it possible that Jim is talking about adding new stuff via the balancer manager and Yann about adding new stuff to the config file and doing a graceful restart?
Regards Rüdiger > -----Original Message----- > From: Jim Jagielski [mailto:j...@jagunet.com] > Sent: Dienstag, 25. August 2015 14:12 > To: dev@httpd.apache.org > Subject: Re: svn commit: r1696960 - in /httpd/httpd/trunk: CHANGES > docs/log-message-tags/next-number modules/proxy/mod_proxy_balancer.c > > How and when do ALIGNED_PROXY_BALANCER_SHARED_SIZE and conf->max_balancers > change??? > > > On Aug 21, 2015, at 8:34 AM, yla...@apache.org wrote: > > > > Author: ylavic > > Date: Fri Aug 21 12:34:02 2015 > > New Revision: 1696960 > > > > URL: http://svn.apache.org/r1696960 > > Log: > > mod_proxy_balancer: Fix balancers and balancer members reuse on > > restart when new ones are added. PR 58024. > > > > Since slotmem_create() issues a strict check on the size of an existing > > slot before reusing it, it won't reuse existing balancers and members > when > > new ones are added during restart (whereas growth margins would allow > it). > > Fix this by using slotmem_attach() first and if it succeeds do the > checks > > based on the returned previous number of existing entries. > > > > Modified: > > httpd/httpd/trunk/CHANGES > > httpd/httpd/trunk/docs/log-message-tags/next-number > > httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c > > > > Modified: httpd/httpd/trunk/CHANGES > > URL: > http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1696960&r1=1696 > 959&r2=1696960&view=diff > > > ========================================================================== > ==== > > --- httpd/httpd/trunk/CHANGES [utf-8] (original) > > +++ httpd/httpd/trunk/CHANGES [utf-8] Fri Aug 21 12:34:02 2015 > > @@ -1,6 +1,9 @@ > > -*- coding: > utf-8 -*- > > Changes with Apache 2.5.0 > > > > + *) mod_proxy_balancer: Fix balancers and balancer members reuse on > > + restart when new ones are added. PR 58024. [Yann Ylavic] > > + > > *) mod_socache_memcache: Add the 'MemcacheConnTTL' directive to > control how > > long to keep idle connections with the memcache server(s). > > Change default value from 600 usec (!) to 15 sec. PR 58091 > > > > Modified: httpd/httpd/trunk/docs/log-message-tags/next-number > > URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/log-message- > tags/next-number?rev=1696960&r1=1696959&r2=1696960&view=diff > > > ========================================================================== > ==== > > --- httpd/httpd/trunk/docs/log-message-tags/next-number (original) > > +++ httpd/httpd/trunk/docs/log-message-tags/next-number Fri Aug 21 > 12:34:02 2015 > > @@ -1 +1 @@ > > -2964 > > +2966 > > > > Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c > > URL: > http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_bal > ancer.c?rev=1696960&r1=1696959&r2=1696960&view=diff > > > ========================================================================== > ==== > > --- httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c (original) > > +++ httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c Fri Aug 21 > 12:34:02 2015 > > @@ -761,8 +761,11 @@ static int balancer_post_config(apr_pool > > char *id; > > proxy_balancer *balancer; > > ap_slotmem_type_t type; > > + apr_size_t attached_size; > > + unsigned int attached_num; > > void *sconf = s->module_config; > > conf = (proxy_server_conf *)ap_get_module_config(sconf, > &proxy_module); > > + > > /* > > * During create_proxy_config() we created a dummy id. Now that > > * we have identifying info, we can create the real id > > @@ -794,11 +797,39 @@ static int balancer_post_config(apr_pool > > (int)ALIGNED_PROXY_BALANCER_SHARED_SIZE, > > (int)conf->balancers->nelts, conf- > >max_balancers); > > > > - rv = storage->create(&new, conf->id, > > - ALIGNED_PROXY_BALANCER_SHARED_SIZE, > > - conf->max_balancers, type, pconf); > > + /* First try to attach() since the number of configured > balancers > > + * may have changed during restart, and we don't want > create() to > > + * fail because the overall size * number of entries is not > stricly > > + * identical to the previous run. There may still be > enough room > > + * for this new run thanks to bgrowth margin, so if > attach() > > + * succeeds we can only check for the number of available > entries > > + * to be *greater or* equal to what we need now. If > attach() fails > > + * we simply fall back to create(). > > + */ > > + rv = storage->attach(&new, conf->id, > > + &attached_size, &attached_num, > > + pconf); > > + if (rv != APR_SUCCESS) { > > + rv = storage->create(&new, conf->id, > > + > ALIGNED_PROXY_BALANCER_SHARED_SIZE, > > + conf->max_balancers, type, pconf); > > + } > > + else { > > + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, > APLOGNO(02964) > > + "Balancers attached: %d, %d (%d)", > > + (int)ALIGNED_PROXY_BALANCER_SHARED_SIZE, > > + (int)attached_num, conf->max_balancers); > > + if (attached_size == ALIGNED_PROXY_BALANCER_SHARED_SIZE > > + && attached_num >= conf->balancers->nelts) { > > + conf->max_balancers = attached_num; > > + } > > + else { > > + rv = APR_ENOSPC; > > + } > > + } > > if (rv != APR_SUCCESS) { > > - ap_log_error(APLOG_MARK, APLOG_EMERG, rv, s, > APLOGNO(01179) "balancer slotmem_create failed"); > > + ap_log_error(APLOG_MARK, APLOG_EMERG, rv, s, > APLOGNO(01179) > > + "balancer slotmem create or attach > failed"); > > return !OK; > > } > > conf->bslot = new; > > @@ -864,11 +895,32 @@ static int balancer_post_config(apr_pool > > (int)ALIGNED_PROXY_WORKER_SHARED_SIZE, > > (int)balancer->max_workers, i); > > > > - rv = storage->create(&new, balancer->s->sname, > > - ALIGNED_PROXY_WORKER_SHARED_SIZE, > > - balancer->max_workers, type, pconf); > > + /* try to attach first (see rationale from balancers above) > */ > > + rv = storage->attach(&new, balancer->s->sname, > > + &attached_size, &attached_num, > > + pconf); > > + if (rv != APR_SUCCESS) { > > + rv = storage->create(&new, balancer->s->sname, > > + ALIGNED_PROXY_WORKER_SHARED_SIZE, > > + balancer->max_workers, type, > pconf); > > + } > > + else { > > + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, > APLOGNO(02965) > > + "Workers attached: %s (%s), %d, %d (%d) > [%u]", > > + balancer->s->name, balancer->s->sname, > > + (int)ALIGNED_PROXY_WORKER_SHARED_SIZE, > > + (int)attached_num, balancer->max_workers, > i); > > + if (attached_size == ALIGNED_PROXY_WORKER_SHARED_SIZE > > + && attached_num >= balancer->workers->nelts) { > > + balancer->max_workers = attached_num; > > + } > > + else { > > + rv = APR_ENOSPC; > > + } > > + } > > if (rv != APR_SUCCESS) { > > - ap_log_error(APLOG_MARK, APLOG_EMERG, rv, s, > APLOGNO(01185) "worker slotmem_create failed"); > > + ap_log_error(APLOG_MARK, APLOG_EMERG, rv, s, > APLOGNO(01185) > > + "worker slotmem create or attach failed"); > > return !OK; > > } > > balancer->wslot = new; > > > >