summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Hiesel <hiesel@google.com>2020-10-16 09:05:46 +0000
committerDavid Ostrovsky <david@ostrovsky.org>2021-01-07 12:19:42 +0100
commitf33f46a9b8a0682b3b6777436c38c020345cce4c (patch)
treee168d2ce72f9cac1fb2692977099d1a656720d00
parent5e31867c6f5f88ac0441c953b180d39b701e862d (diff)
Revert "Remove unused CurrentUser#cacheKey method"
Revert "Adjust to changes in Gerrit core" Revert submission 283559-currentuser-remove-cache-key Reason for revert: Causes a latency regression for some hosts Reverted Changes: I76bfd3ebc:Adjust to changes in Gerrit core If7ccfd9a4:Remove unused CurrentUser#cacheKey method I1378ad083:Remove PerThreadCache Change-Id: Idd9eb9cb91bb531ee75aa2c2cde26a01ceb5ff0a
-rw-r--r--java/com/google/gerrit/server/AnonymousUser.java6
-rw-r--r--java/com/google/gerrit/server/CurrentUser.java6
-rw-r--r--java/com/google/gerrit/server/IdentifiedUser.java5
-rw-r--r--java/com/google/gerrit/server/InternalUser.java5
-rw-r--r--java/com/google/gerrit/server/PeerDaemonUser.java5
-rw-r--r--java/com/google/gerrit/server/query/change/SingleGroupUser.java5
-rw-r--r--javatests/com/google/gerrit/server/extensions/webui/UiActionsTest.java5
-rw-r--r--javatests/com/google/gerrit/server/permissions/RefControlTest.java5
m---------plugins/replication0
9 files changed, 42 insertions, 0 deletions
diff --git a/java/com/google/gerrit/server/AnonymousUser.java b/java/com/google/gerrit/server/AnonymousUser.java
index c96d61aab5..91d2d05e49 100644
--- a/java/com/google/gerrit/server/AnonymousUser.java
+++ b/java/com/google/gerrit/server/AnonymousUser.java
@@ -27,6 +27,12 @@ public class AnonymousUser extends CurrentUser {
}
@Override
+ public Object getCacheKey() {
+ // Treat all anonymous users as a single user
+ return "anonymous";
+ }
+
+ @Override
public String toString() {
return "ANONYMOUS";
}
diff --git a/java/com/google/gerrit/server/CurrentUser.java b/java/com/google/gerrit/server/CurrentUser.java
index 1955340cf7..75afc04ce3 100644
--- a/java/com/google/gerrit/server/CurrentUser.java
+++ b/java/com/google/gerrit/server/CurrentUser.java
@@ -90,6 +90,12 @@ public abstract class CurrentUser {
*/
public abstract GroupMembership getEffectiveGroups();
+ /**
+ * Returns a unique identifier for this user that is intended to be used as a cache key. Returned
+ * object should to implement {@code equals()} and {@code hashCode()} for effective caching.
+ */
+ public abstract Object getCacheKey();
+
/** Unique name of the user on this server, if one has been assigned. */
public Optional<String> getUserName() {
return Optional.empty();
diff --git a/java/com/google/gerrit/server/IdentifiedUser.java b/java/com/google/gerrit/server/IdentifiedUser.java
index 14d74d0be2..7cafdc046d 100644
--- a/java/com/google/gerrit/server/IdentifiedUser.java
+++ b/java/com/google/gerrit/server/IdentifiedUser.java
@@ -390,6 +390,11 @@ public class IdentifiedUser extends CurrentUser {
return effectiveGroups;
}
+ @Override
+ public Object getCacheKey() {
+ return getAccountId();
+ }
+
public PersonIdent newRefLogIdent() {
return newRefLogIdent(new Date(), TimeZone.getDefault());
}
diff --git a/java/com/google/gerrit/server/InternalUser.java b/java/com/google/gerrit/server/InternalUser.java
index 821a0c6135..381819d980 100644
--- a/java/com/google/gerrit/server/InternalUser.java
+++ b/java/com/google/gerrit/server/InternalUser.java
@@ -36,6 +36,11 @@ public class InternalUser extends CurrentUser {
}
@Override
+ public String getCacheKey() {
+ return "internal";
+ }
+
+ @Override
public boolean isInternalUser() {
return true;
}
diff --git a/java/com/google/gerrit/server/PeerDaemonUser.java b/java/com/google/gerrit/server/PeerDaemonUser.java
index 8a8b67a2be..b27e05cf41 100644
--- a/java/com/google/gerrit/server/PeerDaemonUser.java
+++ b/java/com/google/gerrit/server/PeerDaemonUser.java
@@ -40,6 +40,11 @@ public class PeerDaemonUser extends CurrentUser {
return GroupMembership.EMPTY;
}
+ @Override
+ public Object getCacheKey() {
+ return getRemoteAddress();
+ }
+
public SocketAddress getRemoteAddress() {
return peer;
}
diff --git a/java/com/google/gerrit/server/query/change/SingleGroupUser.java b/java/com/google/gerrit/server/query/change/SingleGroupUser.java
index 7947b6b4f5..c451d46d29 100644
--- a/java/com/google/gerrit/server/query/change/SingleGroupUser.java
+++ b/java/com/google/gerrit/server/query/change/SingleGroupUser.java
@@ -36,4 +36,9 @@ public final class SingleGroupUser extends CurrentUser {
public GroupMembership getEffectiveGroups() {
return groups;
}
+
+ @Override
+ public Object getCacheKey() {
+ return groups.getKnownGroups();
+ }
}
diff --git a/javatests/com/google/gerrit/server/extensions/webui/UiActionsTest.java b/javatests/com/google/gerrit/server/extensions/webui/UiActionsTest.java
index 1cdca1b695..de23ef4573 100644
--- a/javatests/com/google/gerrit/server/extensions/webui/UiActionsTest.java
+++ b/javatests/com/google/gerrit/server/extensions/webui/UiActionsTest.java
@@ -101,6 +101,11 @@ public class UiActionsTest {
}
@Override
+ public Object getCacheKey() {
+ return new Object();
+ }
+
+ @Override
public boolean isIdentifiedUser() {
return true;
}
diff --git a/javatests/com/google/gerrit/server/permissions/RefControlTest.java b/javatests/com/google/gerrit/server/permissions/RefControlTest.java
index da28ad1cf1..87db21fa1d 100644
--- a/javatests/com/google/gerrit/server/permissions/RefControlTest.java
+++ b/javatests/com/google/gerrit/server/permissions/RefControlTest.java
@@ -1259,6 +1259,11 @@ public class RefControlTest {
}
@Override
+ public Object getCacheKey() {
+ return new Object();
+ }
+
+ @Override
public Optional<String> getUserName() {
return Optional.ofNullable(username);
}
diff --git a/plugins/replication b/plugins/replication
-Subproject 7d21e802e5057c2c40201de327a4fa5ef4186ab
+Subproject b197452eeaa6e8b1270465e6640331f2a9ae6b3