[server] Make connection pooler configurable and set better default values
Drop the configuration connections-pool-size and add new configurations options:
* connections-pool-min-size. Set to 0 by default so we open connections only
when needed. This avoid opening min-size*processes connections at startup,
which is, it think, a good default.
* connections-pool-max-size. Set to 0 (unlimited) by default, so we move the
bottleneck to postgresql.
* connections-idle-timeout. Set to 10 minutes. I don't have arguments about
this except that this is the default in pgbouncer.
from cubicweb.server import SOURCE_TYPES
from cubicweb.server.serverconfig import (SourceConfiguration,
generate_source_config)
sync_schema_props_perms('EmailAddress')
def update_config(source, **config):
cfg = source.dictconfig
cfg.update(config)
options = SOURCE_TYPES[source.type].options
sconfig = SourceConfiguration(source._cw.vreg.config, options=options)
for opt, val in cfg.items():
try:
sconfig.set_option(opt, val)
except OptionError:
continue
cfgstr = str(generate_source_config(sconfig), source._cw.encoding)
source.cw_set(config=cfgstr)
for source in rql('CWSource X WHERE X type "ldapuser"').entities():
config = source.dictconfig
host = config.pop('host', u'ldap')
protocol = config.pop('protocol', u'ldap')
source.cw_set(url=u'%s://%s' % (protocol, host))
update_config(source, **config)
commit()