Files
gerrit/gerrit-server/src/main/java/com/google/gerrit/server
Edwin Kempin a80101b895 Migrate accounts to NoteDb (part 1)
Always write account updates to both backends, ReviewDb and NoteDb.

In NoteDb accounts are represented as user branches in the All-Users
repository. Optionally a user branch can contain a 'account.config' file
that stores account properties, such as full name, preferred email,
status and the active flag. The timestamp of the first commit on a user
branch denotes the registration date. The initial commit on the user
branch may be empty (since having an 'account.config' is optional).

The 'account.config' file is a git config file that has one 'account'
section with the properties of the account:

  [account]
    active = false
    fullName = John Doe
    preferredEmail = john.doe@foo.com
    status = Overloaded with reviews

All keys are optional. This means 'account.config' may not exist on the
user branch if no properties are set.

If no value for 'active' is specified, by default the account is
considered as active.

AccountsUpdate is now sending RefUpdatedEvent's when an account is
updated. ReindexAfterRefUpdate receives the events and takes care to
evict the updated accounts from the account cache, which in turn
triggers reindex of the accounts. This is why AccountsUpdate no longer
needs to evict the updated accounts itself from the account cache. Since
AccountsUpdate doesn't reindex accounts on its own anymore the
ServerNoReindex factory can be removed.

To support a live migration on a multi-master Gerrit installation, the
migration of accounts from ReviewDb to NoteDb is done in 3 steps:
- part 1 (this change):
  * always write to both backends (ReviewDb and NoteDb)
  * always read accounts from ReviewDb
  * upgraded instances write to both backends, old instances only
    write to ReviewDb
  * after upgrading all instances (all still read from ReviewDb)
    run a batch to copy all accounts from the ReviewDb to NoteDb
- part 2 (next change):
  * bump the database schema version
  * migrate the accounts from ReviewDb to NoteDb (for single instance
    Gerrit servers)
  * config option to control whether accounts are read from ReviewDb or
    NoteDb
- part 3:
  * remove config option to control whether accounts are read from
    ReviewDb or NoteDb and always read from NoteDb
  * delete the database table

Change-Id: I2e0b13feb3465e086b49b2de2439a56696b5fba9
Signed-off-by: Edwin Kempin <ekempin@google.com>
2017-06-27 15:56:32 +02:00
..
2017-04-02 08:15:15 +00:00
2017-06-27 15:56:32 +02:00
2017-06-24 11:30:40 +09:00
2017-06-23 15:59:09 -04:00
2017-06-23 15:59:09 -04:00