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
This commit is contained in:
Patrick Hiesel
2020-10-16 09:05:46 +00:00
parent 37e0c4671c
commit 0e9b531949
9 changed files with 43 additions and 1 deletions

View File

@@ -26,6 +26,12 @@ public class AnonymousUser extends CurrentUser {
return new ListGroupMembership(Collections.singleton(SystemGroupBackend.ANONYMOUS_USERS)); return new ListGroupMembership(Collections.singleton(SystemGroupBackend.ANONYMOUS_USERS));
} }
@Override
public Object getCacheKey() {
// Treat all anonymous users as a single user
return "anonymous";
}
@Override @Override
public String toString() { public String toString() {
return "ANONYMOUS"; return "ANONYMOUS";

View File

@@ -91,6 +91,12 @@ public abstract class CurrentUser {
*/ */
public abstract GroupMembership getEffectiveGroups(); 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. */ /** Unique name of the user on this server, if one has been assigned. */
public Optional<String> getUserName() { public Optional<String> getUserName() {
return Optional.empty(); return Optional.empty();

View File

@@ -413,6 +413,11 @@ public class IdentifiedUser extends CurrentUser {
return effectiveGroups; return effectiveGroups;
} }
@Override
public Object getCacheKey() {
return getAccountId();
}
public PersonIdent newRefLogIdent() { public PersonIdent newRefLogIdent() {
return newRefLogIdent(new Date(), TimeZone.getDefault()); return newRefLogIdent(new Date(), TimeZone.getDefault());
} }

View File

@@ -35,6 +35,11 @@ public class InternalUser extends CurrentUser {
return GroupMembership.EMPTY; return GroupMembership.EMPTY;
} }
@Override
public String getCacheKey() {
return "internal";
}
@Override @Override
public boolean isInternalUser() { public boolean isInternalUser() {
return true; return true;

View File

@@ -40,6 +40,11 @@ public class PeerDaemonUser extends CurrentUser {
return GroupMembership.EMPTY; return GroupMembership.EMPTY;
} }
@Override
public Object getCacheKey() {
return getRemoteAddress();
}
public SocketAddress getRemoteAddress() { public SocketAddress getRemoteAddress() {
return peer; return peer;
} }

View File

@@ -64,4 +64,9 @@ public final class GroupBackedUser extends CurrentUser {
public String getLoggableName() { public String getLoggableName() {
return "GroupBackedUser with memberships: " + groups.getKnownGroups(); return "GroupBackedUser with memberships: " + groups.getKnownGroups();
} }
@Override
public Object getCacheKey() {
return groups.getKnownGroups();
}
} }

View File

@@ -100,6 +100,11 @@ public class UiActionsTest {
throw new UnsupportedOperationException("not implemented"); throw new UnsupportedOperationException("not implemented");
} }
@Override
public Object getCacheKey() {
return new Object();
}
@Override @Override
public boolean isIdentifiedUser() { public boolean isIdentifiedUser() {
return true; return true;

View File

@@ -1197,6 +1197,11 @@ public class RefControlTest {
return groups; return groups;
} }
@Override
public Object getCacheKey() {
return new Object();
}
@Override @Override
public Optional<String> getUserName() { public Optional<String> getUserName() {
return Optional.ofNullable(username); return Optional.ofNullable(username);