Fetch account-by-id from accounts cache during auth
When authenticating users to Gerrit we can actually use the accounts
cache without necessarily fetching them again from DB.
Accounts are not very volatile and once a user gets provisioned
its ID cannot be changed anymore: it is safe then to use the cache
instead of overloading the underlying DB.
NOTE: The amount of load taken out of DB can be significant when
robot users (e.g. build jobs) are constantly polling
Gerrit for changes over HTTP connections.
Example: 10 slaves on 10 repos doing 100 polls/day would
have generated 10k identical SQL queries per day.
Change-Id: I861ab81015e5f559020b3565fbc3bd5d38c31146
This commit is contained in:
committed by
Shawn Pearce
parent
7ab817371e
commit
c93e8eeeda
@@ -118,8 +118,8 @@ public class AccountManager {
|
||||
|
||||
} else { // Account exists
|
||||
|
||||
Account act = db.accounts().get(id.getAccountId());
|
||||
if (act == null || !act.isActive()) {
|
||||
Account act = byIdCache.get(id.getAccountId()).getAccount();
|
||||
if (!act.isActive()) {
|
||||
throw new AccountException("Authentication error, account inactive");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user