diff options
author | Patrick Hiesel <hiesel@google.com> | 2020-10-16 09:05:46 +0000 |
---|---|---|
committer | David Ostrovsky <david@ostrovsky.org> | 2021-01-07 12:19:42 +0100 |
commit | f33f46a9b8a0682b3b6777436c38c020345cce4c (patch) | |
tree | e168d2ce72f9cac1fb2692977099d1a656720d00 | |
parent | 5e31867c6f5f88ac0441c953b180d39b701e862d (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
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 |