Merge branch 'stable-3.4' into stable-3.5
* stable-3.4:
Fix eviction logic tests during prune phase
getIfPresent: fallback to fetching from store if isn't in memory
Fix failing test expectations on H2 analysis
Change-Id: I8407c1c2085b6f145655b4dc3c6dabe9436af252
diff --git a/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/ChronicleMapCacheConfig.java b/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/ChronicleMapCacheConfig.java
index 01ba278..e2c5afe 100644
--- a/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/ChronicleMapCacheConfig.java
+++ b/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/ChronicleMapCacheConfig.java
@@ -264,11 +264,11 @@
static final ImmutableMap<String, DefaultConfig> defaultMap =
new ImmutableMap.Builder<String, DefaultConfig>()
.put("accounts", DefaultConfig.create(30, 256, 1000, 1))
+ .put("approvals", DefaultConfig.create(103, 365, 1000, 3))
.put("change_kind", DefaultConfig.create(59, 26, 1000, 1))
.put("change_notes", DefaultConfig.create(36, 10240, 1000, 3))
.put("comment_context", DefaultConfig.create(80, 662, 2000, 3))
.put("conflicts", DefaultConfig.create(70, 16, 1000, 1))
- .put("diff", DefaultConfig.create(98, 10240, 1000, 2))
.put("diff_intraline", DefaultConfig.create(512, 2048, 1000, 2))
.put("diff_summary", DefaultConfig.create(128, 2048, 1000, 1))
.put("external_ids_map", DefaultConfig.create(128, 204800, 2, 1))
diff --git a/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/H2MigrationServlet.java b/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/H2MigrationServlet.java
index c3959e9..287fe72 100644
--- a/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/H2MigrationServlet.java
+++ b/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/H2MigrationServlet.java
@@ -42,8 +42,10 @@
import com.google.gerrit.server.patch.DiffSummaryKey;
import com.google.gerrit.server.patch.IntraLineDiff;
import com.google.gerrit.server.patch.IntraLineDiffKey;
-import com.google.gerrit.server.patch.PatchList;
-import com.google.gerrit.server.patch.PatchListKey;
+import com.google.gerrit.server.patch.filediff.FileDiffCacheKey;
+import com.google.gerrit.server.patch.filediff.FileDiffOutput;
+import com.google.gerrit.server.patch.gitfilediff.GitFileDiff;
+import com.google.gerrit.server.patch.gitfilediff.GitFileDiffCacheKey;
import com.google.gerrit.server.query.change.ConflictKey;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -104,7 +106,9 @@
@Named("git_tags") PersistentCacheDef<String, TagSetHolder> gitTagsCacheDef,
@Named("change_notes")
PersistentCacheDef<ChangeNotesCache.Key, ChangeNotesState> changeNotesCacheDef,
- @Named("diff") PersistentCacheDef<PatchListKey, PatchList> diffCacheDef,
+ @Named("gerrit_file_diff")
+ PersistentCacheDef<FileDiffCacheKey, FileDiffOutput> gerritFileDiffDef,
+ @Named("git_file_diff") PersistentCacheDef<GitFileDiffCacheKey, GitFileDiff> gitFileDiffDef,
@Named("diff_intraline")
PersistentCacheDef<IntraLineDiffKey, IntraLineDiff> diffIntraLineCacheDef,
@Named("diff_summary") PersistentCacheDef<DiffSummaryKey, DiffSummary> diffSummaryCacheDef,
@@ -126,7 +130,8 @@
pureRevertCacheDef,
gitTagsCacheDef,
changeNotesCacheDef,
- diffCacheDef,
+ gerritFileDiffDef,
+ gitFileDiffDef,
diffIntraLineCacheDef,
diffSummaryCacheDef,
persistedProjectsCacheDef,
diff --git a/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/InMemoryCacheLoadingFromStoreImpl.java b/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/InMemoryCacheLoadingFromStoreImpl.java
index 96b75da..ea11bba 100644
--- a/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/InMemoryCacheLoadingFromStoreImpl.java
+++ b/src/main/java/com/googlesource/gerrit/modules/cache/chroniclemap/InMemoryCacheLoadingFromStoreImpl.java
@@ -14,7 +14,6 @@
package com.googlesource.gerrit.modules.cache.chroniclemap;
-import com.google.common.cache.Cache;
import com.google.common.cache.CacheStats;
import com.google.common.cache.LoadingCache;
import com.google.gerrit.common.Nullable;
@@ -22,7 +21,7 @@
import java.util.concurrent.ExecutionException;
class InMemoryCacheLoadingFromStoreImpl<K, V> implements InMemoryCache<K, V> {
- private final Cache<K, TimedValue<V>> loadingFromStoreCache;
+ private final LoadingCache<K, TimedValue<V>> loadingFromStoreCache;
private final boolean loadingFromSource;
/**
@@ -59,15 +58,15 @@
@Override
public TimedValue<V> get(K key) throws ExecutionException {
- if (loadingFromSource) {
- return ((LoadingCache<K, TimedValue<V>>) loadingFromStoreCache).get(key);
- }
-
TimedValue<V> cachedValue = getIfPresent(key);
if (cachedValue != null) {
return cachedValue;
}
+ if (loadingFromSource) {
+ return loadingFromStoreCache.get(key);
+ }
+
throw new UnsupportedOperationException(
String.format("Could not load value for %s without any loader", key));
}
@@ -75,7 +74,7 @@
@Override
public void refresh(K key) {
if (loadingFromSource) {
- ((LoadingCache<K, TimedValue<V>>) loadingFromStoreCache).refresh(key);
+ loadingFromStoreCache.refresh(key);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/AnalyzeH2CachesIT.java b/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/AnalyzeH2CachesIT.java
index 49fca1a..7c55849 100644
--- a/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/AnalyzeH2CachesIT.java
+++ b/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/AnalyzeH2CachesIT.java
@@ -47,7 +47,8 @@
String result = adminSshSession.exec(cmd);
adminSshSession.assertSuccess();
- assertThat(result).contains("[cache \"diff\"]\n" + "\tmaxEntries = 1\n");
+ assertThat(result).contains("[cache \"git_file_diff\"]\n" + "\tmaxEntries = 1\n");
+ assertThat(result).contains("[cache \"gerrit_file_diff\"]\n" + "\tmaxEntries = 2\n");
assertThat(result).contains("[cache \"accounts\"]\n" + "\tmaxEntries = 4\n");
assertThat(result).contains("[cache \"diff_summary\"]\n" + "\tmaxEntries = 1\n");
assertThat(result).contains("[cache \"persisted_projects\"]\n" + "\tmaxEntries = 3\n");
diff --git a/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/AutoAdjustCachesIT.java b/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/AutoAdjustCachesIT.java
index 39e832a..5e4fe22 100644
--- a/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/AutoAdjustCachesIT.java
+++ b/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/AutoAdjustCachesIT.java
@@ -62,7 +62,8 @@
private static final String SSH_CMD = "cache-chroniclemap auto-adjust-caches";
private static final String REST_CMD = "/plugins/cache-chroniclemap/auto-adjust-caches";
private static final String GROUPS_BYUUID_PERSISTED = "groups_byuuid_persisted";
- private static final String DIFF = "diff";
+ private static final String GERRIT_FILE_DIFF = "gerrit_file_diff";
+ private static final String GIT_FILE_DIFF = "git_file_diff";
private static final String DIFF_SUMMARY = "diff_summary";
private static final String ACCOUNTS = "accounts";
private static final String PERSISTED_PROJECTS = "persisted_projects";
@@ -74,7 +75,13 @@
private static final Function<String, Boolean> MATCH_ALL = (n) -> true;
private static final ImmutableList<String> EXPECTED_CACHES =
- ImmutableList.of(GROUPS_BYUUID_PERSISTED, DIFF, DIFF_SUMMARY, ACCOUNTS, PERSISTED_PROJECTS);
+ ImmutableList.of(
+ GROUPS_BYUUID_PERSISTED,
+ GERRIT_FILE_DIFF,
+ GIT_FILE_DIFF,
+ DIFF_SUMMARY,
+ ACCOUNTS,
+ PERSISTED_PROJECTS);
@Inject private SitePaths sitePaths;
@@ -175,10 +182,23 @@
}
@Test
- public void shouldCreateNewCacheFileForSingleDiffCache() throws Exception {
+ public void shouldCreateNewCacheFileForSingleGitFileDiffCache() throws Exception {
createChange();
- adminSshSession.exec(SSH_CMD + " " + DIFF);
+ adminSshSession.exec(SSH_CMD + " " + GIT_FILE_DIFF);
+
+ adminSshSession.assertSuccess();
+ Set<String> tunedCaches =
+ tunedFileNamesSet(n -> n.matches(".*" + AutoAdjustCaches.TUNED_INFIX + ".*"));
+
+ assertThat(tunedCaches.size()).isEqualTo(1);
+ }
+
+ @Test
+ public void shouldCreateNewCacheFileForSingleGerritFileDiffCache() throws Exception {
+ createChange();
+
+ adminSshSession.exec(SSH_CMD + " " + GERRIT_FILE_DIFF);
adminSshSession.assertSuccess();
Set<String> tunedCaches =
@@ -256,10 +276,23 @@
}
@Test
- public void shouldAllowTuningOfSingleDiffCacheOverRestForAdmin() throws Exception {
+ public void shouldAllowTuningOfSingleGitFileDiffCacheOverRestForAdmin() throws Exception {
createChange();
- RestResponse resp = adminRestSession.put(REST_CMD + "?CACHE_NAME=" + DIFF);
+ RestResponse resp = adminRestSession.put(REST_CMD + "?CACHE_NAME=" + GIT_FILE_DIFF);
+
+ resp.assertCreated();
+
+ assertThat(configResult(resp.getEntityContent(), null).getSubsections("cache")).isNotEmpty();
+ assertThat(tunedFileNamesSet(n -> n.matches(".*" + AutoAdjustCaches.TUNED_INFIX + ".*")))
+ .hasSize(1);
+ }
+
+ @Test
+ public void shouldAllowTuningOfSingleGerritFileDiffCacheOverRestForAdmin() throws Exception {
+ createChange();
+
+ RestResponse resp = adminRestSession.put(REST_CMD + "?CACHE_NAME=" + GERRIT_FILE_DIFF);
resp.assertCreated();
diff --git a/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/MigrateH2CachesInMemoryIT.java b/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/MigrateH2CachesInMemoryIT.java
index dbca0df..3561051 100644
--- a/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/MigrateH2CachesInMemoryIT.java
+++ b/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/MigrateH2CachesInMemoryIT.java
@@ -65,6 +65,6 @@
private RestResponse runMigrationWithAcceptHeader(RestSession restSession, String acceptHeader)
throws IOException {
- return restSession.putWithHeader(MIGRATION_ENDPOINT, new BasicHeader(ACCEPT, acceptHeader));
+ return restSession.putWithHeaders(MIGRATION_ENDPOINT, new BasicHeader(ACCEPT, acceptHeader));
}
}
diff --git a/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/MigrateH2CachesLocalDiskIT.java b/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/MigrateH2CachesLocalDiskIT.java
index 77ae477..57de6cd 100644
--- a/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/MigrateH2CachesLocalDiskIT.java
+++ b/src/test/java/com/googlesource/gerrit/modules/cache/chroniclemap/MigrateH2CachesLocalDiskIT.java
@@ -288,7 +288,7 @@
private RestResponse runMigrationWithAcceptHeader(RestSession restSession, String acceptHeader)
throws IOException {
- return restSession.putWithHeader(MIGRATION_ENDPOINT, new BasicHeader(ACCEPT, acceptHeader));
+ return restSession.putWithHeaders(MIGRATION_ENDPOINT, new BasicHeader(ACCEPT, acceptHeader));
}
private <T> T findClassBoundWithName(Class<T> clazz, String named) {