OwnersDb get()

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);
    }
  }