Mercurial > p > roundup > code
diff doc/upgrading.txt @ 6814:3f60a71b0812
Summary: Support selecion session/otk data store. Add redis as data store.
Allow admin to select the backend data store. Compatibility matrix:
main\/ session>| anydbm | sqlite | redis | mysql | postgresql |
anydbm | D | | X | | |
sqlite | X | D | X | | |
mysql | | | | D | |
postgresql | | | | | D |
--------------------------------------------------------------+
D - default if unconfigured, X - compatible choice
DETAILS
roundup/configuration.py:
add config.ini section sessiondb with settings: backend and redis_url.
CHANGES.txt, doc/admin_guide.txt, doc/installation.txt, doc/upgrading.txt:
doc on config of session db and redis. Plus some other fixes:
admin - clarified why we do not drop __words and __testids
table in native-fts conversion. TYpo fix.
upgrading - doc how you can keep using anydbm for session data with
sqlite. Fix dupe sentence in an upgrading config.ini
section.
roundup/backends/back_anydbm.py, roundup/backends/back_sqlite.py:
code to support redis, redis/anydbm backends respectively.
roundup/backends/sessions_redis.py
new storage backend for redis.
roundup/rest.py, roundup/cgi/actions.py, roundup/cgi/templating.py
redis uses a different way of calculating lifetime/timestamp.
Since expiration of an item occurred if its timestamp was more
than 1 week old, code would calculate:
now - 1 week + lifetime.
But this results in faster expiration in redis if used for
lifetime/timestamp.
Convert code to use the lifetime() method in BasicDatabase
that generates the right timestamp for each backend.
test/session_common.py:
added tests for more cases, get without default, getall non-existing
key etc. timestamp test changed to use new self.get_ts which is
overridden in other tests. Test that datatypes survive storage.
test/test_redis_session.py:
test redis session store with sqlite and anydbm primary databases
test/test_anydbm.py, test/test_sqlite.py
add test to make sure the databases are properly set up
sqlite - add test cases where anydbm is used as datastore
anydbm - remove updateTimestamp override add get_ts().
test/test_config.py
tests on redis_url and compatibility on choice of sessiondb backend
.travis.yml:
add redis db and redis-py
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Thu, 04 Aug 2022 14:41:58 -0400 |
| parents | bdd28b244839 |
| children | 1319ab13f286 |
line wrap: on
line diff
--- a/doc/upgrading.txt Wed Aug 03 17:34:58 2022 -0400 +++ b/doc/upgrading.txt Thu Aug 04 14:41:58 2022 -0400 @@ -35,6 +35,18 @@ Migrating from 2.2.0 to 2.3.0 ============================= +Update your ``config.ini`` (required) +------------------------------------- + +Upgrade tracker's config.ini file. Use:: + + roundup-admin -i /path/to/tracker updateconfig newconfig.ini + +to generate a new ini file preserving all your settings. +You can then merge any local comments from the tracker's +``config.ini`` to ``newconfig.ini`` and replace +``config.ini`` with ``newconfig.ini``. + Rdbms version change from 7 to 8 (required) ------------------------------------------- @@ -67,8 +79,8 @@ have run it, or have used another interface to the tracker, or are using anydbm). -Session/OTK data storage for SQLite backend changed ---------------------------------------------------- +Session/OTK data storage for SQLite backend changed (required) +-------------------------------------------------------------- Roundup stores a lot of ephemeral data: @@ -83,17 +95,35 @@ files is surprising and due to how we lock dbm files can be a performance issue. -In this release two sqlite databases called ``db-otk`` and -``db-session`` replace the dbm databases. Once you make the -change the old ``otks`` and ``sessions`` dbm databases can -be removed. +However you can continue to use the dbm files by setting the +``backend`` option in the ``[sessiondb]`` section of +``config.ini`` to ``anydbm``. + +If you do not change the setting, two sqlite databases +called ``db-otk`` and ``db-session`` replace the dbm +databases. Once you make the change the old ``otks`` and +``sessions`` dbm databases can be removed. Note this replacement will require users to log in again and -refresh web pages to save data. It is best is people save +refresh web pages to save data. It is best if people save all their changes and log out of Roundup before the upgrade is done to minimize confusion. Because the data is ephemeral, there is no plan to migrate this data to the new -SQLite databases. +SQLite databases. If you want to keep using the data set the +``sessiondb`` ``backend`` option as described above. + +Session/OTK data storage using Redis (optional) +----------------------------------------------- + +If you are running Roundup with Python 3.6 or newer, you can +store your ephemeral data in a Redis database. This provides +significantly better performance for ephemeral data than +SQLite or dbm files. See the section `Using Redis for Session +Databases`_ in the `administration guide`_ + + +.. _Using Redis for Session Databases: + admin_guide.html#using-redis-for-session-databases .. index:: Upgrading; 2.1.0 to 2.2.0 @@ -107,11 +137,10 @@ roundup-admin -i /path/to/tracker updateconfig newconfig.ini -to generate a new ini file preserving all your settings. You -can then merge any local comments from the tracker's -``config.ini`` into ``newconfig.ini``. You can then merge -comments from ``config.ini`` to ``newconfig.ini`` and -replace ``config.ini`` with ``newconfig.ini``. +to generate a new ini file preserving all your settings. +You can then merge any local comments from the tracker's +``config.ini`` to ``newconfig.ini`` and replace +``config.ini`` with ``newconfig.ini``. Rdbms version change from 6 to 7 (required) -------------------------------------------
