diff options
author | Martin Fick <mfick@codeaurora.org> | 2022-03-17 16:56:30 -0600 |
---|---|---|
committer | Martin Fick <mfick@codeaurora.org> | 2022-03-17 17:02:58 -0600 |
commit | 2e6ae84d1e60c69a2485f9c284b2c5f2d7a04257 (patch) | |
tree | f0e9e6e47338a6823ba9ab9e4df43bcdf1c5a985 | |
parent | a94fad0841b4dab7bf405711c6f9e813eff64220 (diff) | |
parent | 371f3942020ef38e4bddae9a49aa81e120fe06cb (diff) |
Merge branch 'stable-3.2' into stable-3.3
* stable-3.2:
Revert "CmdLineParser: Remove unused prefix argument"
Log the exception that caused the user's deactivation to fail
Avoid re-reading refs in schema 161
Run background GC in Schema 144 and update GCs done in Schema 146
Trigger All-Users GC in background in schema 123
Improve comment describing ExternalId#SCHEME_GERRIT
Change-Id: Id94e24a6f5c95b74b02f0cfba5a7d9a74af77de2
Release-Notes: skip
4 files changed, 26 insertions, 17 deletions
diff --git a/java/com/google/gerrit/server/StarredChangesUtil.java b/java/com/google/gerrit/server/StarredChangesUtil.java index 93cf0de441..904490cb10 100644 --- a/java/com/google/gerrit/server/StarredChangesUtil.java +++ b/java/com/google/gerrit/server/StarredChangesUtil.java @@ -389,18 +389,24 @@ public class StarredChangesUtil { TraceContext.newTimer( "Read star labels", Metadata.builder().noteDbRefName(refName).build())) { Ref ref = repo.exactRef(refName); - if (ref == null) { - return StarRef.MISSING; - } + return readLabels(repo, ref); + } + } - try (ObjectReader reader = repo.newObjectReader()) { - ObjectLoader obj = reader.open(ref.getObjectId(), Constants.OBJ_BLOB); - return StarRef.create( - ref, - Splitter.on(CharMatcher.whitespace()) - .omitEmptyStrings() - .split(new String(obj.getCachedBytes(Integer.MAX_VALUE), UTF_8))); - } + public static StarRef readLabels(Repository repo, Ref ref) throws IOException { + if (ref == null) { + return StarRef.MISSING; + } + try (TraceTimer traceTimer = + TraceContext.newTimer( + String.format("Read star labels from %s (without ref lookup)", ref.getName())); + ObjectReader reader = repo.newObjectReader()) { + ObjectLoader obj = reader.open(ref.getObjectId(), Constants.OBJ_BLOB); + return StarRef.create( + ref, + Splitter.on(CharMatcher.whitespace()) + .omitEmptyStrings() + .split(new String(obj.getCachedBytes(Integer.MAX_VALUE), UTF_8))); } } diff --git a/java/com/google/gerrit/server/account/AccountDeactivator.java b/java/com/google/gerrit/server/account/AccountDeactivator.java index b12e585131..ea327f8403 100644 --- a/java/com/google/gerrit/server/account/AccountDeactivator.java +++ b/java/com/google/gerrit/server/account/AccountDeactivator.java @@ -117,7 +117,7 @@ public class AccountDeactivator implements Runnable { return true; } } catch (ResourceConflictException e) { - logger.atInfo().log("Account %s already deactivated, continuing...", userName); + logger.atInfo().withCause(e).log("Account %s already deactivated, continuing...", userName); } catch (Exception e) { logger.atSevere().withCause(e).log( "Error deactivating account: %s (%s) %s", diff --git a/java/com/google/gerrit/server/account/externalids/ExternalId.java b/java/com/google/gerrit/server/account/externalids/ExternalId.java index 1d31da9eef..71ce4d88c7 100644 --- a/java/com/google/gerrit/server/account/externalids/ExternalId.java +++ b/java/com/google/gerrit/server/account/externalids/ExternalId.java @@ -112,8 +112,10 @@ public abstract class ExternalId implements Serializable { private static final String PASSWORD_KEY = "password"; /** - * Scheme used for {@link AuthType#LDAP}, {@link AuthType#CLIENT_SSL_CERT_LDAP}, {@link - * AuthType#HTTP_LDAP}, and {@link AuthType#LDAP_BIND} usernames. + * Scheme used to label accounts created, when using the LDAP-based authentication types {@link + * AuthType#LDAP}, {@link AuthType#CLIENT_SSL_CERT_LDAP}, {@link AuthType#HTTP_LDAP}, and {@link + * AuthType#LDAP_BIND}. The external ID stores the username. Accounts with such an external ID + * will be authenticated against the configured LDAP identity provider. * * <p>The name {@code gerrit:} was a very poor choice. * diff --git a/java/com/google/gerrit/util/cli/CmdLineParser.java b/java/com/google/gerrit/util/cli/CmdLineParser.java index 162f324f3d..e002eeb114 100644 --- a/java/com/google/gerrit/util/cli/CmdLineParser.java +++ b/java/com/google/gerrit/util/cli/CmdLineParser.java @@ -456,7 +456,7 @@ public class CmdLineParser { MyParser(Object bean) { super(bean, ParserProperties.defaults().withAtSyntax(false)); - parseAdditionalOptions(bean, new HashSet<>()); + parseAdditionalOptions("", bean, new HashSet<>()); addOptionsWithMetRequirements(); ensureOptionsInitialized(); } @@ -527,7 +527,7 @@ public class CmdLineParser { } } - private void parseAdditionalOptions(Object bean, Set<Object> parsedBeans) { + private void parseAdditionalOptions(String prefix, Object bean, Set<Object> parsedBeans) { for (Class<?> c = bean.getClass(); c != null; c = c.getSuperclass()) { for (Field f : c.getDeclaredFields()) { if (f.isAnnotationPresent(Options.class)) { @@ -537,7 +537,8 @@ public class CmdLineParser { } catch (IllegalAccessException e) { throw new IllegalAnnotationError(e); } - parseWithPrefix(f.getAnnotation(Options.class).prefix(), additionalBean, parsedBeans); + parseWithPrefix( + prefix + f.getAnnotation(Options.class).prefix(), additionalBean, parsedBeans); } } } |