##// END OF EJS Templates
Authentication: cache plugins for auth and their settings in the auth_registry....
Authentication: cache plugins for auth and their settings in the auth_registry. - Before that change on each requests 4x we loaded plugins for authentication, this hit many caches, db invalidation context and loaded the plugins logic each time. This was a heavy performance hit for SVN and other backends as they needed to load that plugins many many times - Since Authentication plugins almost never change, we'll not store the plugins listed for authentication into the authnregistry for each process - For AuthPlugins settings we now also flush plugins settings, and authnregistry cached plugins

File last commit:

r2628:b50c9994 stable
r4220:5a873939 stable
Show More
db-schema.rst
51 lines | 1.6 KiB | text/x-rst | RstLexer

DB Schema and Migration

To create or alter tables in the database, it's necessary to change a couple of files, apart from configuring the settings pointing to the latest database schema.

Database Model and ORM

On rhodecode.model.db you will find the database definition of all tables and fields. Any freshly installed database will be correctly created by the definitions here. So, any change to this file will affect the tests without having to change any other file.

A second layer are the business classes inside rhodecode.model.

Database Migration

Three files play a role when creating database migrations:

  • Database schema inside rhodecode.lib.dbmigrate
  • Database version inside rhodecode.lib.dbmigrate
  • Configuration __dbversion__ at rhodecode.__init__

Schema is a snapshot of the database version BEFORE the migration. So, it's the initial state before any changes were added. The name convention is the latest release version where the snapshot was created, and not the target version of this code.

Version is the method that will define how to UPGRADE/DOWNGRADE the database.

rhodecode.__init__ contains only a variable that defines up to which version of the database will be used to upgrade. Eg.: __dbversion__ = 45

For examples on how to create those files, please see the existing code.

Migration Command

After you've changed the database ORM and migration files, you can run:

rc-upgrade-db <ini-file>

The database will be upgraded up to the version defined in the __init__ file.