in src/main/java/com/googlesource/gerrit/plugins/findowners/Cache.java [141:205]
OwnersDb get(
Boolean useCache,
PermissionBackend permissionBackend,
ProjectState projectState,
AccountCache accountCache,
Emails emails,
String key,
GitRepositoryManager repoManager,
ChangeData changeData,
String branch,
Collection<String> files) {
if (dbCache == null || !useCache) { // Do not cache OwnersDb
logger.atFiner().log("Create new OwnersDb, key=%s", key);
return new OwnersDb(
permissionBackend,
projectState,
accountCache,
emails,
key,
repoManager,
config,
changeData,
branch,
files);
}
try {
logger.atFiner().log(
"Get from cache %s, key=%s, cache size=%d", dbCache, key, dbCache.size());
logger.atFine().atMostEvery(30, TimeUnit.SECONDS).log(
"FindOwnersCacheStats: %s", dbCache.stats());
return dbCache.get(
key,
new Callable<OwnersDb>() {
@Override
public OwnersDb call() {
logger.atFiner().log("Create new OwnersDb, key=%s", key);
return new OwnersDb(
permissionBackend,
projectState,
accountCache,
emails,
key,
repoManager,
config,
changeData,
branch,
files);
}
});
} catch (ExecutionException e) {
logger.atSevere().withCause(e).log(
"Cache.get has exception for %s", Config.getChangeId(changeData));
return new OwnersDb(
permissionBackend,
projectState,
accountCache,
emails,
key,
repoManager,
config,
changeData,
branch,
files);
}
}