summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuca Milanesio <luca.milanesio@gmail.com>2022-06-01 22:56:17 -0700
committerLuca Milanesio <luca.milanesio@gmail.com>2022-06-02 01:08:53 -0700
commitf38eb6de6c352d0de07ff4ddd71c55bc8aab6e3f (patch)
treec5be8a98eb5d091fcf74f2a45be3f5a552c6099c
parent06f9ed20939c5b4c38044e4bbc7476b0c6700189 (diff)
Allow async receive-commits to have a thread-local cache
Git receive-commits are executed in a background thread of the ReceiveCommits pool. The thread-local cache allocated on the client caller thread isn't used in the execution of the command making multiple operations (e.g. ACL evaluation, events propagation) slower because of the missed caching activity. Release-Notes: Improve caching when merging changes through git push Change-Id: I34a6e1485294f3156c7f35261fedfc280af1ed43
-rw-r--r--java/com/google/gerrit/server/git/receive/AsyncReceiveCommits.java5
1 files changed, 4 insertions, 1 deletions
diff --git a/java/com/google/gerrit/server/git/receive/AsyncReceiveCommits.java b/java/com/google/gerrit/server/git/receive/AsyncReceiveCommits.java
index 882f2083a4..fa4ba4c5e0 100644
--- a/java/com/google/gerrit/server/git/receive/AsyncReceiveCommits.java
+++ b/java/com/google/gerrit/server/git/receive/AsyncReceiveCommits.java
@@ -32,6 +32,7 @@ import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.UsedAt;
+import com.google.gerrit.server.cache.PerThreadCache;
import com.google.gerrit.server.config.ConfigUtil;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.ReceiveCommitsExecutor;
@@ -125,7 +126,9 @@ public class AsyncReceiveCommits implements PreReceiveHook {
@Override
public void run() {
- receiveCommits.processCommands(commands, progress);
+ try (PerThreadCache threadLocalCache = PerThreadCache.create(null)) {
+ receiveCommits.processCommands(commands, progress);
+ }
}
@Override