Merge "Document why root code owners are ranked lower"
diff --git a/java/com/google/gerrit/plugins/codeowners/backend/TransientCodeOwnerConfigCache.java b/java/com/google/gerrit/plugins/codeowners/backend/TransientCodeOwnerConfigCache.java
index 81eea89..65ec308 100644
--- a/java/com/google/gerrit/plugins/codeowners/backend/TransientCodeOwnerConfigCache.java
+++ b/java/com/google/gerrit/plugins/codeowners/backend/TransientCodeOwnerConfigCache.java
@@ -15,6 +15,7 @@
package com.google.gerrit.plugins.codeowners.backend;
import com.google.auto.value.AutoValue;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.entities.BranchNameKey;
import com.google.gerrit.plugins.codeowners.backend.config.CodeOwnersPluginConfiguration;
@@ -24,6 +25,7 @@
import java.io.IOException;
import java.util.HashMap;
import java.util.Optional;
+import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
@@ -37,6 +39,8 @@
* <p><strong>Note</strong>: This class is not thread-safe.
*/
public class TransientCodeOwnerConfigCache implements CodeOwnerConfigLoader {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private final GitRepositoryManager repoManager;
private final CodeOwners codeOwners;
private final Optional<Integer> maxCacheSize;
@@ -97,6 +101,10 @@
}
if (!maxCacheSize.isPresent() || cache.size() < maxCacheSize.get()) {
cache.put(cacheKey, codeOwnerConfig);
+ } else if (maxCacheSize.isPresent()) {
+ logger.atWarning().atMostEvery(1, TimeUnit.DAYS).log(
+ "exceeded limit of %s (project = %s)",
+ getClass().getSimpleName(), cacheKey.codeOwnerConfigKey().project());
}
return codeOwnerConfig;
}
diff --git a/java/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfiguration.java b/java/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfiguration.java
index 3af457d..d070d81 100644
--- a/java/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfiguration.java
+++ b/java/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfiguration.java
@@ -49,6 +49,8 @@
@VisibleForTesting
static final String KEY_ENABLE_EXPERIMENTAL_REST_ENDPOINTS = "enableExperimentalRestEndpoints";
+ @VisibleForTesting static final int DEFAULT_MAX_CODE_OWNER_CONFIG_CACHE_SIZE = 10000;
+
private static final String KEY_MAX_CODE_OWNER_CONFIG_CACHE_SIZE = "maxCodeOwnerConfigCacheSize";
private final CodeOwnersPluginConfigSnapshot.Factory codeOwnersPluginConfigSnapshotFactory;
@@ -132,7 +134,8 @@
int maxCodeOwnerConfigCacheSize =
pluginConfigFactory
.getFromGerritConfig(pluginName)
- .getInt(KEY_MAX_CODE_OWNER_CONFIG_CACHE_SIZE, /* defaultValue= */ 0);
+ .getInt(
+ KEY_MAX_CODE_OWNER_CONFIG_CACHE_SIZE, DEFAULT_MAX_CODE_OWNER_CONFIG_CACHE_SIZE);
return maxCodeOwnerConfigCacheSize > 0
? Optional.of(maxCodeOwnerConfigCacheSize)
: Optional.empty();
diff --git a/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigurationTest.java b/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigurationTest.java
index ff53824..d9c3e14 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigurationTest.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigurationTest.java
@@ -91,8 +91,10 @@
}
@Test
- public void codeOwnerConfigCacheSizeIsUnlimitedByDefault() throws Exception {
- assertThat(codeOwnersPluginConfiguration.getMaxCodeOwnerConfigCacheSize()).isEmpty();
+ public void codeOwnerConfigCacheSizeIsLimitedByDefault() throws Exception {
+ assertThat(codeOwnersPluginConfiguration.getMaxCodeOwnerConfigCacheSize())
+ .value()
+ .isEqualTo(CodeOwnersPluginConfiguration.DEFAULT_MAX_CODE_OWNER_CONFIG_CACHE_SIZE);
}
@Test
diff --git a/resources/Documentation/config.md b/resources/Documentation/config.md
index 21a22bd..53c39d2 100644
--- a/resources/Documentation/config.md
+++ b/resources/Documentation/config.md
@@ -543,7 +543,7 @@
files are cached in memory for the time of the request.\
This configuration parameter allows to set a limit for the number of
code owner config files that are cached per request.\
- By default `0` (unlimited).
+ By default `10000`.
# <a id="projectConfiguration">Project configuration in @PLUGIN@.config</a>