[server] prevent returning closed cursor to the database pool
In since c8c6ad8 init_repository use repo.internal_cnx() instead of
repo.system_source.get_connection() so it use the pool and we should not close
cursors from the pool before returning it back. Otherwise we may have
"connection already closed" error.
This bug only trigger when connection-pool-size = 1. Since we are moving to use
a dynamic pooler we need to get this fixed.
This does not occur with sqlite since the connection wrapper instantiate new
cursor everytime, but this occur with other databases.
3.21 (10 July 2015)
===================
New features
------------
* the datadir-url configuration option lets one choose where static data files
are served (instead of the default ${base-url}/data/)
* some integrity checking that was previously implemented in Python was
moved to the SQL backend. This includes some constraints, and
referential integrity. Some consequences are that:
- disabling integrity hooks no longer disables those checks
- upgrades that modify constraints will fail when running on sqlite
(but upgrades aren't supported on sqlite anyway)
Note: as of 3.21.0, the upgrade script only works on PostgreSQL. The
migration for SQLServer will be added in a future bugfix release.
* for easier instance monitoring, cubicweb can regularly dump some statistics
(basically those exposed by the 'info' and 'gc' views) in json format to a file
User-visible changes
--------------------
* the use of fckeditor for text form fields is disabled by default, to re-enable it simply install the `cubicweb-ckeditor` cube (then `add_cude('ckeditor')` in a migration or in the shell)
* the 'https-deny-anonymous' configuration setting no longer exists
Code movement
-------------
The cubicweb.web.views.timeline module (providing the timeline-json, timeline
and static-timeline views) has moved to a standalone cube_
.. _cube: https://www.cubicweb.org/project/cubicweb-timeline
API changes
-----------
* req.set_cookie's "expires" argument, if not None, is expected to be a
date or a datetime in UTC. It was previously interpreted as localtime
with the UTC offset the server started in, which was inconsistent (we
are not aware of any users of that API).
* the way to run tests on a postgresql backend has changed slightly, use
cubicweb.devtools.{start,stop}pgcluster in setUpModule and tearDownModule
* the Connection and ClientConnection objects introduced in CubicWeb 3.19 have
been unified. To connect to a repository, use::
session = repo.new_session(login, password=...)
with session.new_cnx() as cnx:
cnx.execute(...)
In tests, the 'repo_cnx' and 'client_cnx' methods of RepoAccess are now
aliases to 'cnx'.
Deprecated code drops
---------------------
* the user_callback api has been removed; people should use plain
ajax functions instead
* the `Pyro` and `Zmq-pickle` remote repository access methods have
been entirely removed (emerging alternatives such as rqlcontroller
and cwclientlib should be used instead). Note that as a side effect,
"repository-only" instances (i.e. without a http component) are no
longer possible. If you have any such instances, you will need to
rename the configuration file from repository.conf to all-in-one.conf
and run ``cubicweb-ctl upgrade`` to update it. Likewise, remote cubicweb-ctl
shell is no longer available.
* the old (deprecated since 3.19) `DBAPI` api is completely removed
* cubicweb.toolsutils.config_connect() has been removed