Migrate server classes to Flogger

This is the second part of the migration to Flogger. This change
migrates all classes of the 'server' module to Flogger. Classes of the
'httpd' module have been migrated by the predecessor change. Other
modules continue to use slf4j. They should be migrated by follow-up
changes.

During this migration we try to make the log statements more consistent:
- avoid string concatenation
- avoid usage of String.format(...)

Change-Id: I233afc8360af7fef8640394204d0d676cc0d0001
Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
Edwin Kempin
2018-05-04 11:50:06 +02:00
parent 03d2d209b1
commit a655fe03a7
195 changed files with 1513 additions and 1514 deletions

View File

@@ -27,6 +27,7 @@ import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Shorts;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.LabelType;
@@ -66,8 +67,6 @@ import java.util.Objects;
import java.util.Set;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Utility functions to manipulate patchset approvals.
@@ -82,7 +81,7 @@ import org.slf4j.LoggerFactory;
*/
@Singleton
public class ApprovalsUtil {
private static final Logger log = LoggerFactory.getLogger(ApprovalsUtil.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final Ordering<PatchSetApproval> SORT_APPROVALS =
Ordering.from(comparing(PatchSetApproval::getGranted));
@@ -271,11 +270,12 @@ public class ApprovalsUtil {
.database(db)
.test(ChangePermission.READ);
} catch (IOException | PermissionBackendException e) {
log.warn(
String.format(
logger
.atWarning()
.withCause(e)
.log(
"Failed to check if account %d can see change %d",
accountId.get(), notes.getChangeId().get()),
e);
accountId.get(), notes.getChangeId().get());
return false;
}
}

View File

@@ -71,13 +71,13 @@ java_library(
"//lib/commons:lang",
"//lib/commons:net",
"//lib/commons:validator",
"//lib/flogger:api",
"//lib/guice",
"//lib/guice:guice-assistedinject",
"//lib/guice:guice-servlet",
"//lib/jgit/org.eclipse.jgit.archive:jgit-archive",
"//lib/jgit/org.eclipse.jgit:jgit",
"//lib/jsoup",
"//lib/log:api",
"//lib/log:jsonevent-layout",
"//lib/log:log4j",
"//lib/lucene:lucene-analyzers-common",

View File

@@ -18,6 +18,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
import static java.util.stream.Collectors.toList;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.Permission;
import com.google.gerrit.common.data.PermissionRule;
@@ -36,8 +37,6 @@ import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* With groups in NoteDb, the capability of creating a group is expressed as a {@code CREATE}
@@ -52,7 +51,7 @@ import org.slf4j.LoggerFactory;
*/
@Singleton
public class CreateGroupPermissionSyncer implements ChangeMergedListener {
private static final Logger log = LoggerFactory.getLogger(CreateGroupPermissionSyncer.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final AllProjectsName allProjects;
private final AllUsersName allUsers;
@@ -135,7 +134,7 @@ public class CreateGroupPermissionSyncer implements ChangeMergedListener {
try {
syncIfNeeded();
} catch (IOException | ConfigInvalidException e) {
log.error("Can't sync create group permissions", e);
logger.atSevere().withCause(e).log("Can't sync create group permissions");
}
}
}

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server;
import static java.util.stream.Collectors.toList;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.inject.Injector;
import com.google.inject.Key;
@@ -24,12 +25,10 @@ import com.google.inject.ProvisionException;
import java.util.Arrays;
import java.util.List;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Loads configured Guice modules from {@code gerrit.installModule}. */
public class LibModuleLoader {
private static final Logger log = LoggerFactory.getLogger(LibModuleLoader.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static List<Module> loadModules(Injector parent) {
Config cfg = getConfig(parent);
@@ -44,7 +43,7 @@ public class LibModuleLoader {
private static Module createModule(Injector injector, String className) {
Module m = injector.getInstance(loadModule(className));
log.info("Installed module {}", className);
logger.atInfo().log("Installed module %s", className);
return m;
}
@@ -54,7 +53,7 @@ public class LibModuleLoader {
return (Class<Module>) Class.forName(className);
} catch (ClassNotFoundException | LinkageError e) {
String msg = "Cannot load LibModule " + className;
log.error(msg, e);
logger.atSevere().withCause(e).log(msg);
throw new ProvisionException(msg, e);
}
}

View File

@@ -14,17 +14,16 @@
package com.google.gerrit.server;
import com.google.common.flogger.FluentLogger;
import com.google.inject.servlet.RequestScoped;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Registers cleanup activities to be completed when a scope ends. */
@RequestScoped
public class RequestCleanup implements Runnable {
private static final Logger log = LoggerFactory.getLogger(RequestCleanup.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final List<Runnable> cleanup = new LinkedList<>();
private boolean ran;
@@ -47,7 +46,7 @@ public class RequestCleanup implements Runnable {
try {
i.next().run();
} catch (Throwable err) {
log.error("Failed to execute per-request cleanup", err);
logger.atSevere().withCause(err).log("Failed to execute per-request cleanup");
}
i.remove();
}

View File

@@ -28,6 +28,7 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.reviewdb.client.Account;
@@ -70,11 +71,11 @@ import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.ReceiveCommand;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class StarredChangesUtil {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@AutoValue
public abstract static class StarField {
private static final String SEPARATOR = ":";
@@ -154,8 +155,6 @@ public class StarredChangesUtil {
}
}
private static final Logger log = LoggerFactory.getLogger(StarredChangesUtil.class);
public static final String DEFAULT_LABEL = "star";
public static final String IGNORE_LABEL = "ignore";
public static final String REVIEWED_LABEL = "reviewed";
@@ -305,11 +304,12 @@ public class StarredChangesUtil {
Ref ref = repo.exactRef(RefNames.refsStarredChanges(changeId, accountId));
return ref != null ? ref.getObjectId() : ObjectId.zeroId();
} catch (IOException e) {
log.error(
String.format(
logger
.atSevere()
.withCause(e)
.log(
"Getting star object ID for account %d on change %d failed",
accountId.get(), changeId.get()),
e);
accountId.get(), changeId.get());
return ObjectId.zeroId();
}
}

View File

@@ -18,6 +18,7 @@ import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.base.Strings;
import com.google.common.collect.FluentIterable;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.WebLinkInfoCommon;
import com.google.gerrit.extensions.common.DiffWebLinkInfo;
import com.google.gerrit.extensions.common.WebLinkInfo;
@@ -37,19 +38,17 @@ import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.Collections;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class WebLinks {
private static final Logger log = LoggerFactory.getLogger(WebLinks.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final Predicate<WebLinkInfo> INVALID_WEBLINK =
link -> {
if (link == null) {
return false;
} else if (Strings.isNullOrEmpty(link.name) || Strings.isNullOrEmpty(link.url)) {
log.warn("{} is missing name and/or url", link.getClass().getName());
logger.atWarning().log("%s is missing name and/or url", link.getClass().getName());
return false;
}
return true;
@@ -60,7 +59,7 @@ public class WebLinks {
if (link == null) {
return false;
} else if (Strings.isNullOrEmpty(link.name) || Strings.isNullOrEmpty(link.url)) {
log.warn("{} is missing name and/or url", link.getClass().getName());
logger.atWarning().log("%s is missing name and/or url", link.getClass().getName());
return false;
}
return true;

View File

@@ -19,6 +19,7 @@ import static com.google.gerrit.server.account.externalids.ExternalId.SCHEME_USE
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableMap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.reviewdb.client.Account;
@@ -44,13 +45,11 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Caches important (but small) account state to avoid database hits. */
@Singleton
public class AccountCacheImpl implements AccountCache {
private static final Logger log = LoggerFactory.getLogger(AccountCacheImpl.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String BYID_NAME = "accounts";
@@ -89,7 +88,7 @@ public class AccountCacheImpl implements AccountCache {
try {
return byId.get(accountId).orElse(missing(accountId));
} catch (ExecutionException e) {
log.warn("Cannot load AccountState for " + accountId, e);
logger.atWarning().withCause(e).log("Cannot load AccountState for %s", accountId);
return missing(accountId);
}
}
@@ -99,7 +98,7 @@ public class AccountCacheImpl implements AccountCache {
try {
return byId.get(accountId);
} catch (ExecutionException e) {
log.warn("Cannot load AccountState for ID " + accountId, e);
logger.atWarning().withCause(e).log("Cannot load AccountState for ID %s", accountId);
return null;
}
}
@@ -126,14 +125,14 @@ public class AccountCacheImpl implements AccountCache {
try {
futures = executor.invokeAll(callables);
} catch (InterruptedException e) {
log.error("Cannot load AccountStates", e);
logger.atSevere().withCause(e).log("Cannot load AccountStates");
return ImmutableMap.of();
}
for (Future<Optional<AccountState>> f : futures) {
try {
f.get().ifPresent(s -> accountStates.put(s.getAccount().getId(), s));
} catch (InterruptedException | ExecutionException e) {
log.error("Cannot load AccountState", e);
logger.atSevere().withCause(e).log("Cannot load AccountState");
}
}
return accountStates;
@@ -147,7 +146,7 @@ public class AccountCacheImpl implements AccountCache {
.map(e -> get(e.accountId()))
.orElseGet(Optional::empty);
} catch (IOException | ConfigInvalidException e) {
log.warn("Cannot load AccountState for username " + username, e);
logger.atWarning().withCause(e).log("Cannot load AccountState for username %s", username);
return null;
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.account;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.lifecycle.LifecycleModule;
@@ -27,12 +28,10 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import java.util.Optional;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Runnable to enable scheduling account deactivations to run periodically */
public class AccountDeactivator implements Runnable {
private static final Logger log = LoggerFactory.getLogger(AccountDeactivator.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends LifecycleModule {
@Override
@@ -84,7 +83,7 @@ public class AccountDeactivator implements Runnable {
@Override
public void run() {
log.info("Running account deactivations");
logger.atInfo().log("Running account deactivations");
try {
int numberOfAccountsDeactivated = 0;
for (AccountState acc : accountQueryProvider.get().query(AccountPredicates.isActive())) {
@@ -92,10 +91,16 @@ public class AccountDeactivator implements Runnable {
numberOfAccountsDeactivated++;
}
}
log.info(
"Deactivations complete, {} account(s) were deactivated", numberOfAccountsDeactivated);
logger
.atInfo()
.log(
"Deactivations complete, %d account(s) were deactivated",
numberOfAccountsDeactivated);
} catch (Exception e) {
log.error("Failed to complete deactivation of accounts: " + e.getMessage(), e);
logger
.atSevere()
.withCause(e)
.log("Failed to complete deactivation of accounts: %s", e.getMessage());
}
}
@@ -105,22 +110,22 @@ public class AccountDeactivator implements Runnable {
}
String userName = accountState.getUserName().get();
log.debug("processing account " + userName);
logger.atFine().log("processing account %s", userName);
try {
if (realm.accountBelongsToRealm(accountState.getExternalIds()) && !realm.isActive(userName)) {
sif.deactivate(accountState.getAccount().getId());
log.info("deactivated account " + userName);
logger.atInfo().log("deactivated account %s", userName);
return true;
}
} catch (ResourceConflictException e) {
log.info("Account {} already deactivated, continuing...", userName);
logger.atInfo().log("Account %s already deactivated, continuing...", userName);
} catch (Exception e) {
log.error(
"Error deactivating account: {} ({}) {}",
userName,
accountState.getAccount().getId(),
e.getMessage(),
e);
logger
.atSevere()
.withCause(e)
.log(
"Error deactivating account: %s (%s) %s",
userName, accountState.getAccount().getId(), e.getMessage());
}
return false;
}

View File

@@ -21,6 +21,7 @@ import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.GlobalCapability;
import com.google.gerrit.common.data.Permission;
@@ -56,13 +57,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Tracks authentication related details for user accounts. */
@Singleton
public class AccountManager {
private static final Logger log = LoggerFactory.getLogger(AccountManager.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Sequences sequences;
private final Accounts accounts;
@@ -144,24 +143,27 @@ public class AccountManager {
// An inconsistency is detected in the database, having a record for scheme "username:"
// but no record for scheme "gerrit:". Try to recover by linking
// "gerrit:" identity to the existing account.
log.warn(
"User {} already has an account; link new identity to the existing account.",
who.getUserName());
logger
.atWarning()
.log(
"User %s already has an account; link new identity to the existing account.",
who.getUserName());
return link(existingId.get().accountId(), who);
}
}
// New account, automatically create and return.
log.debug("External ID not found. Attempting to create new account.");
logger.atFine().log("External ID not found. Attempting to create new account.");
return create(who);
}
ExternalId extId = optionalExtId.get();
Optional<AccountState> accountState = byIdCache.get(extId.accountId());
if (!accountState.isPresent()) {
log.error(
"Authentication with external ID {} failed. Account {} doesn't exist.",
extId.key().get(),
extId.accountId().get());
logger
.atSevere()
.log(
"Authentication with external ID %s failed. Account %s doesn't exist.",
extId.key().get(), extId.accountId().get());
throw new AccountException("Authentication error, account not found");
}
@@ -195,12 +197,14 @@ public class AccountManager {
}
setInactiveFlag.deactivate(extId.get().accountId());
} catch (Exception e) {
log.error(
"Unable to deactivate account "
+ authRequest
logger
.atSevere()
.withCause(e)
.log(
"Unable to deactivate account %s",
authRequest
.getUserName()
.orElse(" for external ID key " + authRequest.getExternalIdKey().get()),
e);
.orElse(" for external ID key " + authRequest.getExternalIdKey().get()));
}
}
@@ -261,12 +265,13 @@ public class AccountManager {
&& who.getUserName().isPresent()
&& !who.getUserName().equals(user.getUserName())) {
if (user.getUserName().isPresent()) {
log.warn(
"Not changing already set username {} to {}",
user.getUserName().get(),
who.getUserName().get());
logger
.atWarning()
.log(
"Not changing already set username %s to %s",
user.getUserName().get(), who.getUserName().get());
} else {
log.warn("Not setting username to {}", who.getUserName().get());
logger.atWarning().log("Not setting username to %s", who.getUserName().get());
}
}
@@ -285,11 +290,11 @@ public class AccountManager {
private AuthResult create(AuthRequest who)
throws OrmException, AccountException, IOException, ConfigInvalidException {
Account.Id newId = new Account.Id(sequences.nextAccountId());
log.debug("Assigning new Id {} to account", newId);
logger.atFine().log("Assigning new Id %s to account", newId);
ExternalId extId =
ExternalId.createWithEmail(who.getExternalIdKey(), newId, who.getEmailAddress());
log.debug("Created external Id: {}", extId);
logger.atFine().log("Created external Id: %s", extId);
checkEmailNotUsed(extId);
ExternalId userNameExtId =
who.getUserName().isPresent() ? createUsername(newId, who.getUserName().get()) : null;
@@ -376,13 +381,15 @@ public class AccountManager {
return;
}
log.warn(
"Email {} is already assigned to account {};"
+ " cannot create external ID {} with the same email for account {}.",
email,
existingExtIdsWithEmail.iterator().next().accountId().get(),
extIdToBeCreated.key().get(),
extIdToBeCreated.accountId().get());
logger
.atWarning()
.log(
"Email %s is already assigned to account %s;"
+ " cannot create external ID %s with the same email for account %s.",
email,
existingExtIdsWithEmail.iterator().next().accountId().get(),
extIdToBeCreated.key().get(),
extIdToBeCreated.accountId().get());
throw new AccountException("Email '" + email + "' in use by another account");
}
@@ -414,7 +421,7 @@ public class AccountManager {
public AuthResult link(Account.Id to, AuthRequest who)
throws AccountException, OrmException, IOException, ConfigInvalidException {
Optional<ExternalId> optionalExtId = externalIds.get(who.getExternalIdKey());
log.debug("Link another authentication identity to an existing account");
logger.atFine().log("Link another authentication identity to an existing account");
if (optionalExtId.isPresent()) {
ExternalId extId = optionalExtId.get();
if (!extId.accountId().equals(to)) {
@@ -423,7 +430,7 @@ public class AccountManager {
}
update(who, extId);
} else {
log.debug("Linking new external ID to the existing account");
logger.atFine().log("Linking new external ID to the existing account");
ExternalId newExtId =
ExternalId.createWithEmail(who.getExternalIdKey(), to, who.getEmailAddress());
checkEmailNotUsed(newExtId);

View File

@@ -23,6 +23,7 @@ import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.client.DiffPreferencesInfo;
import com.google.gerrit.extensions.client.EditPreferencesInfo;
@@ -41,8 +42,6 @@ import java.util.Collection;
import java.util.Optional;
import org.apache.commons.codec.DecoderException;
import org.eclipse.jgit.lib.ObjectId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Superset of all information related to an Account. This includes external IDs, project watches,
@@ -52,7 +51,7 @@ import org.slf4j.LoggerFactory;
* account cache (see {@link AccountCache#get(Account.Id)}).
*/
public class AccountState {
private static final Logger logger = LoggerFactory.getLogger(AccountState.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final Function<AccountState, Account.Id> ACCOUNT_ID_FUNCTION =
a -> a.getAccount().getId();
@@ -224,8 +223,7 @@ public class AccountState {
try {
return HashedPassword.decode(hashedStr).checkPassword(password);
} catch (DecoderException e) {
logger.error(
String.format("DecoderException for user %s: %s ", username, e.getMessage()));
logger.atSevere().log("DecoderException for user %s: %s ", username, e.getMessage());
return false;
}
}

View File

@@ -18,6 +18,7 @@ import static java.util.Comparator.comparing;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toSet;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.account.externalids.ExternalIds;
@@ -35,13 +36,11 @@ import java.util.Set;
import java.util.stream.Stream;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Class to access accounts. */
@Singleton
public class Accounts {
private static final Logger log = LoggerFactory.getLogger(Accounts.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GitRepositoryManager repoManager;
private final AllUsersName allUsersName;
@@ -85,7 +84,7 @@ public class Accounts {
try {
read(repo, accountId).ifPresent(accounts::add);
} catch (Exception e) {
log.error(String.format("Ignoring invalid account %s", accountId.get()), e);
logger.atSevere().withCause(e).log("Ignoring invalid account %s", accountId);
}
}
}

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.account;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.cache.CacheModule;
import com.google.gerrit.server.group.InternalGroup;
@@ -29,13 +30,11 @@ import com.google.inject.TypeLiteral;
import com.google.inject.name.Named;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Tracks group objects in memory for efficient access. */
@Singleton
public class GroupCacheImpl implements GroupCache {
private static final Logger log = LoggerFactory.getLogger(GroupCacheImpl.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String BYID_NAME = "groups";
private static final String BYNAME_NAME = "groups_byname";
@@ -82,7 +81,7 @@ public class GroupCacheImpl implements GroupCache {
try {
return byId.get(groupId);
} catch (ExecutionException e) {
log.warn("Cannot load group {}", groupId, e);
logger.atWarning().withCause(e).log("Cannot load group %s", groupId);
return Optional.empty();
}
}
@@ -95,7 +94,7 @@ public class GroupCacheImpl implements GroupCache {
try {
return byName.get(name.get());
} catch (ExecutionException e) {
log.warn("Cannot look up group {} by name", name.get(), e);
logger.atWarning().withCause(e).log("Cannot look up group %s by name", name.get());
return Optional.empty();
}
}
@@ -109,7 +108,7 @@ public class GroupCacheImpl implements GroupCache {
try {
return byUUID.get(groupUuid.get());
} catch (ExecutionException e) {
log.warn("Cannot look up group {} by uuid", groupUuid.get(), e);
logger.atWarning().withCause(e).log("Cannot look up group %s by uuid", groupUuid.get());
return Optional.empty();
}
}

View File

@@ -21,6 +21,7 @@ import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.cache.CacheModule;
@@ -37,13 +38,12 @@ import com.google.inject.name.Named;
import java.util.Collection;
import java.util.Collections;
import java.util.concurrent.ExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Tracks group inclusions in memory for efficient access. */
@Singleton
public class GroupIncludeCacheImpl implements GroupIncludeCache {
private static final Logger log = LoggerFactory.getLogger(GroupIncludeCacheImpl.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String PARENT_GROUPS_NAME = "groups_bysubgroup";
private static final String GROUPS_WITH_MEMBER_NAME = "groups_bymember";
private static final String EXTERNAL_NAME = "groups_external";
@@ -94,7 +94,7 @@ public class GroupIncludeCacheImpl implements GroupIncludeCache {
try {
return groupsWithMember.get(memberId);
} catch (ExecutionException e) {
log.warn(String.format("Cannot load groups containing %d as member", memberId.get()));
logger.atWarning().withCause(e).log("Cannot load groups containing %s as member", memberId);
return ImmutableSet.of();
}
}
@@ -104,7 +104,7 @@ public class GroupIncludeCacheImpl implements GroupIncludeCache {
try {
return parentGroups.get(groupId);
} catch (ExecutionException e) {
log.warn("Cannot load included groups", e);
logger.atWarning().withCause(e).log("Cannot load included groups");
return Collections.emptySet();
}
}
@@ -132,7 +132,7 @@ public class GroupIncludeCacheImpl implements GroupIncludeCache {
try {
return external.get(EXTERNAL_NAME);
} catch (ExecutionException e) {
log.warn("Cannot load set of non-internal groups", e);
logger.atWarning().withCause(e).log("Cannot load set of non-internal groups");
return ImmutableList.of();
}
}

View File

@@ -30,6 +30,7 @@ import static com.google.gerrit.server.git.UserConfigSections.URL_ALIAS;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.client.DiffPreferencesInfo;
import com.google.gerrit.extensions.client.EditPreferencesInfo;
@@ -54,8 +55,6 @@ import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.CommitBuilder;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Parses/writes preferences from/to a {@link Config} file.
@@ -86,7 +85,7 @@ import org.slf4j.LoggerFactory;
* <p>The preferences are lazily parsed.
*/
public class Preferences {
private static final Logger log = LoggerFactory.getLogger(Preferences.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final String PREFERENCES_CONFIG = "preferences.config";
@@ -339,7 +338,7 @@ public class Preferences {
}
}
} catch (IllegalAccessException e) {
log.error("Failed to apply default general preferences", e);
logger.atSevere().withCause(e).log("Failed to apply default general preferences");
return GeneralPreferencesInfo.defaults();
}
return result;
@@ -358,7 +357,7 @@ public class Preferences {
}
}
} catch (IllegalAccessException e) {
log.error("Failed to apply default diff preferences", e);
logger.atSevere().withCause(e).log("Failed to apply default diff preferences");
return DiffPreferencesInfo.defaults();
}
return result;
@@ -377,7 +376,7 @@ public class Preferences {
}
}
} catch (IllegalAccessException e) {
log.error("Failed to apply default edit preferences", e);
logger.atSevere().withCause(e).log("Failed to apply default edit preferences");
return EditPreferencesInfo.defaults();
}
return result;

View File

@@ -22,6 +22,7 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GroupDescription;
import com.google.gerrit.common.data.GroupReference;
@@ -39,15 +40,13 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Universal implementation of the GroupBackend that works with the injected set of GroupBackends.
*/
@Singleton
public class UniversalGroupBackend implements GroupBackend {
private static final Logger log = LoggerFactory.getLogger(UniversalGroupBackend.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<GroupBackend> backends;
@@ -80,7 +79,7 @@ public class UniversalGroupBackend implements GroupBackend {
}
GroupBackend b = backend(uuid);
if (b == null) {
log.debug("Unknown GroupBackend for UUID: " + uuid);
logger.atFine().log("Unknown GroupBackend for UUID: %s", uuid);
return null;
}
return b.get(uuid);
@@ -130,7 +129,7 @@ public class UniversalGroupBackend implements GroupBackend {
}
GroupMembership m = membership(uuid);
if (m == null) {
log.debug("Unknown GroupMembership for UUID: " + uuid);
logger.atFine().log("Unknown GroupMembership for UUID: %s", uuid);
return false;
}
return m.contains(uuid);
@@ -146,7 +145,7 @@ public class UniversalGroupBackend implements GroupBackend {
}
GroupMembership m = membership(uuid);
if (m == null) {
log.debug("Unknown GroupMembership for UUID: " + uuid);
logger.atFine().log("Unknown GroupMembership for UUID: %s", uuid);
continue;
}
lookups.put(m, uuid);
@@ -176,7 +175,7 @@ public class UniversalGroupBackend implements GroupBackend {
}
GroupMembership m = membership(uuid);
if (m == null) {
log.debug("Unknown GroupMembership for UUID: " + uuid);
logger.atFine().log("Unknown GroupMembership for UUID: %s", uuid);
continue;
}
lookups.put(m, uuid);

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.account;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.git.meta.VersionedMetaData;
@@ -21,12 +22,10 @@ import java.io.IOException;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.CommitBuilder;
import org.eclipse.jgit.lib.FileMode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** User configured named destinations. */
public class VersionedAccountDestinations extends VersionedMetaData {
private static final Logger log = LoggerFactory.getLogger(VersionedAccountDestinations.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static VersionedAccountDestinations forUser(Account.Id id) {
return new VersionedAccountDestinations(RefNames.refsUsers(id));
@@ -62,7 +61,8 @@ public class VersionedAccountDestinations extends VersionedMetaData {
destinations.parseLabel(
label,
readUTF8(path),
error -> log.error("Error parsing file {}: {}", path, error.getMessage()));
error ->
logger.atSevere().log("Error parsing file %s: %s", path, error.getMessage()));
}
}
}

View File

@@ -14,18 +14,17 @@
package com.google.gerrit.server.account;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.git.meta.VersionedMetaData;
import java.io.IOException;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.CommitBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Named Queries for user accounts. */
public class VersionedAccountQueries extends VersionedMetaData {
private static final Logger log = LoggerFactory.getLogger(VersionedAccountQueries.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static VersionedAccountQueries forUser(Account.Id id) {
return new VersionedAccountQueries(RefNames.refsUsers(id));
@@ -53,7 +52,9 @@ public class VersionedAccountQueries extends VersionedMetaData {
QueryList.parse(
readUTF8(QueryList.FILE_NAME),
error ->
log.error("Error parsing file {}: {}", QueryList.FILE_NAME, error.getMessage()));
logger
.atSevere()
.log("Error parsing file %s: %s", QueryList.FILE_NAME, error.getMessage()));
}
@Override

View File

@@ -25,6 +25,7 @@ import com.google.common.collect.Multimap;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.Multimaps;
import com.google.common.collect.SetMultimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -36,13 +37,11 @@ import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.function.Consumer;
import org.eclipse.jgit.lib.ObjectId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Caches external IDs of all accounts. The external IDs are always loaded from NoteDb. */
@Singleton
class ExternalIdCacheImpl implements ExternalIdCache {
private static final Logger log = LoggerFactory.getLogger(ExternalIdCacheImpl.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final LoadingCache<ObjectId, AllExternalIds> extIdsByAccount;
private final ExternalIdReader externalIdReader;
@@ -154,7 +153,7 @@ class ExternalIdCacheImpl implements ExternalIdCache {
update.accept(m);
extIdsByAccount.put(newNotesRev, AllExternalIds.create(m));
} catch (ExecutionException e) {
log.warn("Cannot update external IDs", e);
logger.atWarning().withCause(e).log("Cannot update external IDs");
} finally {
lock.unlock();
}

View File

@@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.common.collect.Streams;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.metrics.Counter0;
import com.google.gerrit.metrics.Description;
@@ -60,8 +61,6 @@ import org.eclipse.jgit.notes.NoteMap;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevTree;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* {@link VersionedMetaData} subclass to update external IDs.
@@ -85,7 +84,7 @@ import org.slf4j.LoggerFactory;
* accounts for which external IDs have been updated (see {@link #updateCaches()}).
*/
public class ExternalIdNotes extends VersionedMetaData {
private static final Logger log = LoggerFactory.getLogger(ExternalIdNotes.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final int MAX_NOTE_SZ = 1 << 19;
@@ -358,7 +357,10 @@ public class ExternalIdNotes extends VersionedMetaData {
try {
b.add(ExternalId.parse(note.getName(), raw, note.getData()));
} catch (ConfigInvalidException | RuntimeException e) {
log.error(String.format("Ignoring invalid external ID note %s", note.getName()), e);
logger
.atSevere()
.withCause(e)
.log("Ignoring invalid external ID note %s", note.getName());
}
}
return b.build();

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.args4j;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.ProjectUtil;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.reviewdb.client.Project;
@@ -32,11 +33,9 @@ import org.kohsuke.args4j.OptionDef;
import org.kohsuke.args4j.spi.OptionHandler;
import org.kohsuke.args4j.spi.Parameters;
import org.kohsuke.args4j.spi.Setter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ProjectHandler extends OptionHandler<ProjectState> {
private static final Logger log = LoggerFactory.getLogger(ProjectHandler.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final ProjectCache projectCache;
private final PermissionBackend permissionBackend;
@@ -89,7 +88,7 @@ public class ProjectHandler extends OptionHandler<ProjectState> {
} catch (AuthException e) {
throw new CmdLineException(owner, new NoSuchProjectException(nameKey).getMessage());
} catch (PermissionBackendException | IOException e) {
log.warn("Cannot load project " + nameWithoutSuffix, e);
logger.atWarning().withCause(e).log("Cannot load project %s", nameWithoutSuffix);
throw new CmdLineException(owner, new NoSuchProjectException(nameKey).getMessage());
}

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.server.audit;
import com.google.common.collect.ImmutableSet;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountGroup;
@@ -24,12 +25,10 @@ import com.google.gerrit.server.audit.group.GroupSubgroupAuditEvent;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class AuditService {
private static final Logger log = LoggerFactory.getLogger(AuditService.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<AuditListener> auditListeners;
private final DynamicSet<GroupAuditListener> groupAuditListeners;
@@ -59,7 +58,7 @@ public class AuditService {
GroupMemberAuditEvent.create(actor, updatedGroup, addedMembers, addedOn);
auditListener.onAddMembers(event);
} catch (RuntimeException e) {
log.error("failed to log add accounts to group event", e);
logger.atSevere().withCause(e).log("failed to log add accounts to group event");
}
}
}
@@ -75,7 +74,7 @@ public class AuditService {
GroupMemberAuditEvent.create(actor, updatedGroup, deletedMembers, deletedOn);
auditListener.onDeleteMembers(event);
} catch (RuntimeException e) {
log.error("failed to log delete accounts from group event", e);
logger.atSevere().withCause(e).log("failed to log delete accounts from group event");
}
}
}
@@ -91,7 +90,7 @@ public class AuditService {
GroupSubgroupAuditEvent.create(actor, updatedGroup, addedSubgroups, addedOn);
auditListener.onAddSubgroups(event);
} catch (RuntimeException e) {
log.error("failed to log add groups to group event", e);
logger.atSevere().withCause(e).log("failed to log add groups to group event");
}
}
}
@@ -107,7 +106,7 @@ public class AuditService {
GroupSubgroupAuditEvent.create(actor, updatedGroup, deletedSubgroups, deletedOn);
auditListener.onDeleteSubgroups(event);
} catch (RuntimeException e) {
log.error("failed to log delete groups from group event", e);
logger.atSevere().withCause(e).log("failed to log delete groups from group event");
}
}
}

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.server.auth.ldap;
import com.google.common.base.Throwables;
import com.google.common.cache.Cache;
import com.google.common.collect.ImmutableSet;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.ParameterizedString;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.account.AccountException;
@@ -57,12 +58,10 @@ import javax.security.auth.Subject;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
class Helper {
private static final Logger log = LoggerFactory.getLogger(Helper.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static final String LDAP_UUID = "ldap:";
static final String STARTTLS_PROPERTY = Helper.class.getName() + ".startTls";
@@ -155,12 +154,12 @@ class Helper {
tls.close();
}
} catch (IOException | NamingException e) {
log.warn("Cannot close LDAP startTls handle", e);
logger.atWarning().withCause(e).log("Cannot close LDAP startTls handle");
}
try {
ctx.close();
} catch (NamingException e) {
log.warn("Cannot close LDAP handle", e);
logger.atWarning().withCause(e).log("Cannot close LDAP handle");
}
}
@@ -198,7 +197,7 @@ class Helper {
Throwables.throwIfInstanceOf(e.getException(), IOException.class);
Throwables.throwIfInstanceOf(e.getException(), NamingException.class);
Throwables.throwIfInstanceOf(e.getException(), RuntimeException.class);
log.warn("Internal error", e.getException());
logger.atWarning().withCause(e.getException()).log("Internal error");
return null;
} finally {
ctx.logout();
@@ -345,7 +344,7 @@ class Helper {
}
}
} catch (NamingException e) {
log.warn("Could not find group {}", groupDN, e);
logger.atWarning().withCause(e).log("Could not find group %s", groupDN);
}
cachedParentsDNs = dns.build();
parentGroups.put(groupDN, cachedParentsDNs);
@@ -476,11 +475,13 @@ class Helper {
try {
return LdapType.guessType(ctx);
} catch (NamingException e) {
log.warn(
"Cannot discover type of LDAP server at {},"
+ " assuming the server is RFC 2307 compliant.",
server,
e);
logger
.atWarning()
.withCause(e)
.log(
"Cannot discover type of LDAP server at %s,"
+ " assuming the server is RFC 2307 compliant.",
server);
return LdapType.RFC_2307;
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.auth.ldap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.client.AuthType;
import com.google.gerrit.server.account.AccountException;
import com.google.gerrit.server.auth.AuthBackend;
@@ -33,12 +34,10 @@ import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.security.auth.login.LoginException;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Implementation of AuthBackend for the LDAP authentication system. */
public class LdapAuthBackend implements AuthBackend {
private static final Logger log = LoggerFactory.getLogger(LdapAuthBackend.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Helper helper;
private final AuthConfig authConfig;
@@ -90,13 +89,13 @@ public class LdapAuthBackend implements AuthBackend {
helper.close(ctx);
}
} catch (AccountException e) {
log.error("Cannot query LDAP to authenticate user", e);
logger.atSevere().withCause(e).log("Cannot query LDAP to authenticate user");
throw new InvalidCredentialsException("Cannot query LDAP for account", e);
} catch (IOException | NamingException e) {
log.error("Cannot query LDAP to authenticate user", e);
logger.atSevere().withCause(e).log("Cannot query LDAP to authenticate user");
throw new AuthException("Cannot query LDAP for account", e);
} catch (LoginException e) {
log.error("Cannot authenticate server via JAAS", e);
logger.atSevere().withCause(e).log("Cannot authenticate server via JAAS");
throw new AuthException("Cannot query LDAP for account", e);
}
}

View File

@@ -22,6 +22,7 @@ import static com.google.gerrit.server.auth.ldap.LdapModule.GROUP_EXIST_CACHE;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GroupDescription;
import com.google.gerrit.common.data.GroupReference;
@@ -51,12 +52,10 @@ import javax.naming.directory.DirContext;
import javax.naming.ldap.LdapName;
import javax.naming.ldap.Rdn;
import javax.security.auth.login.LoginException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Implementation of GroupBackend for the LDAP group system. */
public class LdapGroupBackend implements GroupBackend {
static final Logger log = LoggerFactory.getLogger(LdapGroupBackend.class);
static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String LDAP_NAME = "ldap/";
private static final String GROUPNAME = "groupname";
@@ -103,7 +102,7 @@ public class LdapGroupBackend implements GroupBackend {
return cn;
}
} catch (InvalidNameException e) {
log.warn("Cannot parse LDAP dn for cn", e);
logger.atWarning().withCause(e).log("Cannot parse LDAP dn for cn");
}
return dn;
}
@@ -127,7 +126,7 @@ public class LdapGroupBackend implements GroupBackend {
return null;
}
} catch (ExecutionException e) {
log.warn("Cannot lookup group {} in LDAP", groupDn, e);
logger.atWarning().withCause(e).log("Cannot lookup group %s in LDAP", groupDn);
return null;
}
}
@@ -217,7 +216,7 @@ public class LdapGroupBackend implements GroupBackend {
helper.close(ctx);
}
} catch (IOException | NamingException | LoginException e) {
log.warn("Cannot query LDAP for groups matching requested name", e);
logger.atWarning().withCause(e).log("Cannot query LDAP for groups matching requested name");
}
return out;
}

View File

@@ -65,7 +65,10 @@ class LdapGroupMembership implements GroupMembership {
try {
membership = new ListGroupMembership(membershipCache.get(id));
} catch (ExecutionException e) {
LdapGroupBackend.log.warn("Cannot lookup membershipsOf {} in LDAP", id, e);
LdapGroupBackend.logger
.atWarning()
.withCause(e)
.log("Cannot lookup membershipsOf %s in LDAP", id);
membership = GroupMembership.EMPTY;
}
}

View File

@@ -19,6 +19,7 @@ import static com.google.gerrit.server.account.externalids.ExternalId.SCHEME_GER
import com.google.common.base.Strings;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.common.data.ParameterizedString;
import com.google.gerrit.extensions.client.AccountFieldName;
@@ -56,12 +57,10 @@ import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.security.auth.login.LoginException;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
class LdapRealm extends AbstractRealm {
private static final Logger log = LoggerFactory.getLogger(LdapRealm.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static final String LDAP = "com.sun.jndi.ldap.LdapCtxFactory";
static final String USERNAME = "username";
@@ -196,7 +195,7 @@ class LdapRealm extends AbstractRealm {
String configOption, String suppliedValue, boolean disabledByBackend) {
if (disabledByBackend && !Strings.isNullOrEmpty(suppliedValue)) {
String msg = String.format("LDAP backend doesn't support: ldap.%s", configOption);
log.error(msg);
logger.atSevere().log(msg);
throw new IllegalArgumentException(msg);
}
}
@@ -290,10 +289,10 @@ class LdapRealm extends AbstractRealm {
helper.close(ctx);
}
} catch (IOException | NamingException e) {
log.error("Cannot query LDAP to authenticate user", e);
logger.atSevere().withCause(e).log("Cannot query LDAP to authenticate user");
throw new AuthenticationUnavailableException("Cannot query LDAP for account", e);
} catch (LoginException e) {
log.error("Cannot authenticate server via JAAS", e);
logger.atSevere().withCause(e).log("Cannot authenticate server via JAAS");
throw new AuthenticationUnavailableException("Cannot query LDAP for account", e);
}
}
@@ -312,7 +311,7 @@ class LdapRealm extends AbstractRealm {
Optional<Account.Id> id = usernameCache.get(accountName);
return id != null ? id.orElse(null) : null;
} catch (ExecutionException e) {
log.warn("Cannot lookup account {} in LDAP", accountName, e);
logger.atWarning().withCause(e).log("Cannot lookup account %s in LDAP", accountName);
return null;
}
}

View File

@@ -9,8 +9,8 @@ java_library(
"//java/com/google/gerrit/server",
"//lib:guava",
"//lib:h2",
"//lib/flogger:api",
"//lib/guice",
"//lib/jgit/org.eclipse.jgit:jgit",
"//lib/log:api",
],
)

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.server.cache.h2;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.registration.DynamicMap;
@@ -42,12 +43,10 @@ import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
class H2CacheFactory implements PersistentCacheFactory, LifecycleListener {
private static final Logger log = LoggerFactory.getLogger(H2CacheFactory.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final MemoryCacheFactory memCacheFactory;
private final Config config;
@@ -99,15 +98,15 @@ class H2CacheFactory implements PersistentCacheFactory, LifecycleListener {
try {
Files.createDirectories(loc);
} catch (IOException e) {
log.warn("Can't create disk cache: " + loc.toAbsolutePath());
logger.atWarning().log("Can't create disk cache: %s", loc.toAbsolutePath());
return null;
}
}
if (!Files.isWritable(loc)) {
log.warn("Can't write to disk cache: " + loc.toAbsolutePath());
logger.atWarning().log("Can't write to disk cache: %s", loc.toAbsolutePath());
return null;
}
log.info("Enabling disk cache " + loc.toAbsolutePath());
logger.atInfo().log("Enabling disk cache %s", loc.toAbsolutePath());
return loc;
}
@@ -132,16 +131,16 @@ class H2CacheFactory implements PersistentCacheFactory, LifecycleListener {
List<Runnable> pending = executor.shutdownNow();
if (executor.awaitTermination(15, TimeUnit.MINUTES)) {
if (pending != null && !pending.isEmpty()) {
log.info(String.format("Finishing %d disk cache updates", pending.size()));
logger.atInfo().log("Finishing %d disk cache updates", pending.size());
for (Runnable update : pending) {
update.run();
}
}
} else {
log.info("Timeout waiting for disk cache to close");
logger.atInfo().log("Timeout waiting for disk cache to close");
}
} catch (InterruptedException e) {
log.warn("Interrupted waiting for disk cache to shutdown");
logger.atWarning().log("Interrupted waiting for disk cache to shutdown");
}
}
synchronized (caches) {

View File

@@ -21,6 +21,7 @@ import com.google.common.cache.CacheLoader;
import com.google.common.cache.CacheStats;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableSet;
import com.google.common.flogger.FluentLogger;
import com.google.common.hash.BloomFilter;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.server.cache.CacheSerializer;
@@ -46,8 +47,6 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import org.h2.jdbc.JdbcSQLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Hybrid in-memory and database backed cache built on H2.
@@ -71,7 +70,7 @@ import org.slf4j.LoggerFactory;
* @see H2CacheFactory
*/
public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements PersistentCache {
private static final Logger log = LoggerFactory.getLogger(H2CacheImpl.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final ImmutableSet<String> OLD_CLASS_NAMES =
ImmutableSet.of("com.google.gerrit.server.change.ChangeKind");
@@ -347,11 +346,12 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements Per
// most likely bumping serialVersionUID rather than using the new versioning in the
// CacheBinding. That's ok; we'll continue to support both for now.
// TODO(dborowitz): Remove this case when Java serialization is no longer used.
log.warn(
"Entries cached for "
+ url
+ " have an incompatible class and can't be deserialized. "
+ "Cache is flushed.");
logger
.atWarning()
.log(
"Entries cached for %s have an incompatible class and can't be deserialized. "
+ "Cache is flushed.",
url);
invalidateAll();
} else {
throw e;
@@ -359,7 +359,7 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements Per
}
return b;
} catch (IOException | SQLException e) {
log.warn("Cannot build BloomFilter for " + url + ": " + e.getMessage());
logger.atWarning().log("Cannot build BloomFilter for %s: %s", url, e.getMessage());
c = close(c);
return null;
} finally {
@@ -404,7 +404,7 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements Per
}
} catch (IOException | SQLException e) {
if (!isOldClassNameError(e)) {
log.warn("Cannot read cache " + url + " for " + key, e);
logger.atWarning().withCause(e).log("Cannot read cache %s for %s", url, key);
}
c = close(c);
return null;
@@ -475,7 +475,7 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements Per
c.put.clearParameters();
}
} catch (IOException | SQLException e) {
log.warn("Cannot put into cache " + url, e);
logger.atWarning().withCause(e).log("Cannot put into cache %s", url);
c = close(c);
} finally {
release(c);
@@ -488,7 +488,7 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements Per
c = acquire();
invalidate(c, key);
} catch (IOException | SQLException e) {
log.warn("Cannot invalidate cache " + url, e);
logger.atWarning().withCause(e).log("Cannot invalidate cache %s", url);
c = close(c);
} finally {
release(c);
@@ -517,7 +517,7 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements Per
}
bloomFilter = newBloomFilter();
} catch (SQLException e) {
log.warn("Cannot invalidate cache " + url, e);
logger.atWarning().withCause(e).log("Cannot invalidate cache %s", url);
c = close(c);
} finally {
release(c);
@@ -531,8 +531,11 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements Per
try (PreparedStatement ps = c.conn.prepareStatement("DELETE FROM data WHERE version!=?")) {
ps.setInt(1, version);
int oldEntries = ps.executeUpdate();
log.info(
"Pruned {} entries not matching version {} from cache {}", oldEntries, version, url);
logger
.atInfo()
.log(
"Pruned %d entries not matching version %d from cache %s",
oldEntries, version, url);
}
try (Statement s = c.conn.createStatement()) {
// Compute size without restricting to version (although obsolete data was just pruned
@@ -560,7 +563,7 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements Per
}
}
} catch (IOException | SQLException e) {
log.warn("Cannot prune cache " + url, e);
logger.atWarning().withCause(e).log("Cannot prune cache %s", url);
c = close(c);
} finally {
release(c);
@@ -582,7 +585,7 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements Per
}
}
} catch (SQLException e) {
log.warn("Cannot get DiskStats for " + url, e);
logger.atWarning().withCause(e).log("Cannot get DiskStats for %s", url);
c = close(c);
} finally {
release(c);
@@ -653,7 +656,7 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements Per
try {
conn.close();
} catch (SQLException e) {
log.warn("Cannot close connection to " + url, e);
logger.atWarning().withCause(e).log("Cannot close connection to %s", url);
} finally {
conn = null;
}
@@ -665,7 +668,7 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements Per
try {
ps.close();
} catch (SQLException e) {
log.warn("Cannot close statement for " + url, e);
logger.atWarning().withCause(e).log("Cannot close statement for %s", url);
}
}
return null;

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.change;
import com.google.common.base.Strings;
import com.google.common.collect.ListMultimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.changes.RecipientType;
@@ -38,11 +39,9 @@ import com.google.gerrit.server.update.Context;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class AbandonOp implements BatchUpdateOp {
private static final Logger log = LoggerFactory.getLogger(AbandonOp.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final AbandonedSender.Factory abandonedSenderFactory;
private final ChangeMessagesUtil cmUtil;
@@ -133,7 +132,7 @@ public class AbandonOp implements BatchUpdateOp {
cm.setAccountsToNotify(accountsToNotify);
cm.send();
} catch (Exception e) {
log.error("Cannot email update for change " + change.getId(), e);
logger.atSevere().withCause(e).log("Cannot email update for change %s", change.getId());
}
changeAbandoned.fire(change, patchSet, accountState, msgTxt, ctx.getWhen(), notifyHandling);
}

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.change;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.index.query.QueryParseException;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.InternalUser;
@@ -32,12 +33,10 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class AbandonUtil {
private static final Logger log = LoggerFactory.getLogger(AbandonUtil.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final ChangeCleanupConfig cfg;
private final Provider<ChangeQueryProcessor> queryProvider;
@@ -93,12 +92,15 @@ public class AbandonUtil {
msg.append(" ").append(change.getId().get());
}
msg.append(".");
log.error(msg.toString(), e);
logger.atSevere().withCause(e).log(msg.toString());
}
}
log.info("Auto-Abandoned {} of {} changes.", count, changesToAbandon.size());
logger.atInfo().log("Auto-Abandoned %d of %d changes.", count, changesToAbandon.size());
} catch (QueryParseException | OrmException e) {
log.error("Failed to query inactive open changes for auto-abandoning.", e);
logger
.atSevere()
.withCause(e)
.log("Failed to query inactive open changes for auto-abandoning.");
}
}
@@ -116,11 +118,12 @@ public class AbandonUtil {
if (!changesToAbandon.isEmpty()) {
validChanges.add(cd);
} else {
log.debug(
"Change data with id \"{}\" does not satisfy the query \"{}\""
+ " any more, hence skipping it in clean up",
cd.getId(),
query);
logger
.atFine()
.log(
"Change data with id \"%s\" does not satisfy the query \"%s\""
+ " any more, hence skipping it in clean up",
cd.getId(), query);
}
}
return validChanges;

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.change;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.lifecycle.LifecycleModule;
@@ -25,12 +26,10 @@ import com.google.gerrit.server.util.ManualRequestContext;
import com.google.gerrit.server.util.OneOffRequestContext;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Runnable to enable scheduling change cleanups to run periodically */
public class ChangeCleanupRunner implements Runnable {
private static final Logger log = LoggerFactory.getLogger(ChangeCleanupRunner.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends LifecycleModule {
@Override
@@ -76,7 +75,7 @@ public class ChangeCleanupRunner implements Runnable {
@Override
public void run() {
log.info("Running change cleanups.");
logger.atInfo().log("Running change cleanups.");
try (ManualRequestContext ctx = oneOffRequestContext.open()) {
// abandonInactiveOpenChanges skips failures instead of throwing, so retrying will never
// actually happen. For the purposes of this class that is fine: they'll get tried again the
@@ -87,7 +86,7 @@ public class ChangeCleanupRunner implements Runnable {
return null;
});
} catch (RestApiException | UpdateException | OrmException e) {
log.error("Failed to cleanup changes.", e);
logger.atSevere().withCause(e).log("Failed to cleanup changes.");
}
}

View File

@@ -23,6 +23,7 @@ import static java.util.stream.Collectors.toSet;
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.FooterConstants;
import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.common.data.LabelTypes;
@@ -80,16 +81,14 @@ import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.ReceiveCommand;
import org.eclipse.jgit.util.ChangeIdUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ChangeInserter implements InsertChangeOp {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
ChangeInserter create(Change.Id cid, ObjectId commitId, String refName);
}
private static final Logger log = LoggerFactory.getLogger(ChangeInserter.class);
private final PermissionBackend permissionBackend;
private final ProjectCache projectCache;
private final PatchSetInfoFactory patchSetInfoFactory;
@@ -468,11 +467,12 @@ public class ChangeInserter implements InsertChangeOp {
.test(ChangePermission.READ)
&& projectState.statePermitsRead();
} catch (PermissionBackendException e) {
log.warn(
String.format(
logger
.atWarning()
.withCause(e)
.log(
"Failed to check if account %d can see change %d",
accountId.get(), notes.getChangeId().get()),
e);
accountId.get(), notes.getChangeId().get());
return false;
}
})
@@ -497,7 +497,10 @@ public class ChangeInserter implements InsertChangeOp {
cm.addExtraCC(extraCC);
cm.send();
} catch (Exception e) {
log.error("Cannot send email for new change " + change.getId(), e);
logger
.atSevere()
.withCause(e)
.log("Cannot send email for new change %s", change.getId());
}
}

View File

@@ -57,6 +57,7 @@ import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Sets;
import com.google.common.collect.Table;
import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.LabelType;
@@ -165,8 +166,6 @@ import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Produces {@link ChangeInfo} (which is serialized to JSON afterwards) from {@link ChangeData}.
@@ -175,7 +174,7 @@ import org.slf4j.LoggerFactory;
* ChangeData} objects from different sources.
*/
public class ChangeJson {
private static final Logger log = LoggerFactory.getLogger(ChangeJson.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final SubmitRuleOptions SUBMIT_RULE_OPTIONS_LENIENT =
ChangeField.SUBMIT_RULE_OPTIONS_LENIENT.toBuilder().build();
@@ -502,7 +501,10 @@ public class ChangeJson {
ensureLoaded(Collections.singleton(cd));
return Optional.of(format(cd, Optional.empty(), false));
} catch (OrmException | RuntimeException e) {
log.warn("Omitting corrupt change " + cd.getId() + " from results", e);
logger
.atWarning()
.withCause(e)
.log("Omitting corrupt change %s from results", cd.getId());
return Optional.empty();
}
});
@@ -517,7 +519,7 @@ public class ChangeJson {
try {
c.call().ifPresent(result::add);
} catch (Exception e) {
log.warn("Omitting change due to exception", e);
logger.atWarning().withCause(e).log("Omitting change due to exception");
}
}
return result;
@@ -542,7 +544,7 @@ public class ChangeJson {
notes = cd.notes();
} catch (OrmException e) {
String msg = "Error loading change";
log.warn(msg + " " + cd.getId(), e);
logger.atWarning().withCause(e).log(msg + " %s", cd.getId());
ChangeInfo info = new ChangeInfo();
info._number = cd.getId().get();
ProblemInfo p = new ProblemInfo();
@@ -914,7 +916,7 @@ public class ChangeJson {
tag = psa.getTag();
date = psa.getGranted();
if (psa.isPostSubmit()) {
log.warn("unexpected post-submit approval on open change: {}", psa);
logger.atWarning().log("unexpected post-submit approval on open change: %s", psa);
}
} else {
// Either the user cannot vote on this label, or they were added as a
@@ -1559,7 +1561,7 @@ public class ChangeJson {
}
ProjectState projectState = projectCache.checkedGet(cd.project());
if (projectState == null) {
log.error("project state for project " + cd.project() + " is null");
logger.atSevere().log("project state for project %s is null", cd.project());
return false;
}
return projectState.statePermitsRead();

View File

@@ -21,6 +21,7 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.cache.Cache;
import com.google.common.cache.Weigher;
import com.google.common.collect.FluentIterable;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.client.ChangeKind;
import com.google.gerrit.reviewdb.client.Change;
@@ -58,11 +59,9 @@ import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.merge.ThreeWayMerger;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ChangeKindCacheImpl implements ChangeKindCache {
private static final Logger log = LoggerFactory.getLogger(ChangeKindCacheImpl.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String ID_CACHE = "change_kind";
@@ -108,8 +107,10 @@ public class ChangeKindCacheImpl implements ChangeKindCache {
Key key = Key.create(prior, next, useRecursiveMerge);
return new Loader(key, repoManager, project, rw, repoConfig).call();
} catch (IOException e) {
log.warn(
"Cannot check trivial rebase of new patch set " + next.name() + " in " + project, e);
logger
.atWarning()
.withCause(e)
.log("Cannot check trivial rebase of new patch set %s in %s", next.name(), project);
return ChangeKind.REWORK;
}
}
@@ -345,7 +346,10 @@ public class ChangeKindCacheImpl implements ChangeKindCache {
Key key = Key.create(prior, next, useRecursiveMerge);
return cache.get(key, new Loader(key, repoManager, project, rw, repoConfig));
} catch (ExecutionException e) {
log.warn("Cannot check trivial rebase of new patch set " + next.name() + " in " + project, e);
logger
.atWarning()
.withCause(e)
.log("Cannot check trivial rebase of new patch set %s in %s", next.name(), project);
return ChangeKind.REWORK;
}
}
@@ -397,12 +401,12 @@ public class ChangeKindCacheImpl implements ChangeKindCache {
}
} catch (OrmException e) {
// Do nothing; assume we have a complex change
log.warn(
"Unable to get change kind for patchSet "
+ patch.getPatchSetId()
+ "of change "
+ change.getId(),
e);
logger
.atWarning()
.withCause(e)
.log(
"Unable to get change kind for patchSet %s of change %s",
patch.getPatchSetId(), change.getId());
}
}
return kind;
@@ -427,12 +431,12 @@ public class ChangeKindCacheImpl implements ChangeKindCache {
cache, rw, repo.getConfig(), changeDataFactory.create(db, change), patch);
} catch (IOException e) {
// Do nothing; assume we have a complex change
log.warn(
"Unable to get change kind for patchSet "
+ patch.getPatchSetId()
+ "of change "
+ change.getChangeId(),
e);
logger
.atWarning()
.withCause(e)
.log(
"Unable to get change kind for patchSet %s of change %s",
patch.getPatchSetId(), change.getChangeId());
}
}
return kind;

View File

@@ -18,6 +18,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableList;
import com.google.common.flogger.FluentLogger;
import com.google.common.hash.Hasher;
import com.google.common.hash.Hashing;
import com.google.gerrit.extensions.restapi.RestResource;
@@ -49,11 +50,9 @@ import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
import org.eclipse.jgit.lib.ObjectId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ChangeResource implements RestResource, HasETag {
private static final Logger log = LoggerFactory.getLogger(ChangeResource.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
/**
* JSON format version number for ETag computations.
@@ -196,7 +195,7 @@ public class ChangeResource implements RestResource, HasETag {
try {
projectStateTree = projectCache.checkedGet(getProject()).tree();
} catch (IOException e) {
log.error(String.format("could not load project %s while computing etag", getProject()));
logger.atSevere().log("could not load project %s while computing etag", getProject());
projectStateTree = ImmutableList.of();
}

View File

@@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.SetMultimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.FooterConstants;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.TimeUtil;
@@ -80,8 +81,6 @@ import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Checks changes for various kinds of inconsistency and corruption.
@@ -89,7 +88,7 @@ import org.slf4j.LoggerFactory;
* <p>A single instance may be reused for checking multiple changes, but not concurrently.
*/
public class ConsistencyChecker {
private static final Logger log = LoggerFactory.getLogger(ConsistencyChecker.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@AutoValue
public abstract static class Result {
@@ -202,7 +201,7 @@ public class ConsistencyChecker {
}
private Result logAndReturnOneProblem(Exception e, ChangeNotes notes, String problem) {
log.warn("Error checking change " + notes.getChangeId(), e);
logger.atWarning().withCause(e).log("Error checking change %s", notes.getChangeId());
return Result.create(notes, ImmutableList.of(problem(problem)));
}
@@ -582,7 +581,7 @@ public class ConsistencyChecker {
bu.addOp(notes.getChangeId(), new FixMergedOp(p));
bu.execute();
} catch (UpdateException | RestApiException e) {
log.warn("Error marking " + notes.getChangeId() + "as merged", e);
logger.atWarning().withCause(e).log("Error marking %s as merged", notes.getChangeId());
p.status = Status.FIX_FAILED;
p.outcome = "Error updating status to merged";
}
@@ -623,7 +622,7 @@ public class ConsistencyChecker {
}
} catch (IOException e) {
String msg = "Error fixing patch set ref";
log.warn(msg + ' ' + ps.getId().toRefName(), e);
logger.atWarning().withCause(e).log("%s %s", msg, ps.getId().toRefName());
p.status = Status.FIX_FAILED;
p.outcome = msg;
}
@@ -645,7 +644,7 @@ public class ConsistencyChecker {
}
} catch (UpdateException | RestApiException e) {
String msg = "Error deleting patch set";
log.warn(msg + " of change " + ops.get(0).psId.getParentKey(), e);
logger.atWarning().withCause(e).log("%s of change %s", msg, ops.get(0).psId.getParentKey());
for (DeletePatchSetFromDbOp op : ops) {
// Overwrite existing statuses that were set before the transaction was
// rolled back.
@@ -777,7 +776,10 @@ public class ConsistencyChecker {
}
private void warn(Throwable t) {
log.warn("Error in consistency check of change " + notes.getChangeId(), t);
logger
.atWarning()
.withCause(t)
.log("Error in consistency check of change %s", notes.getChangeId());
}
private Result result() {

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.server.change;
import static com.google.gerrit.server.CommentsUtil.COMMENT_ORDER;
import com.google.common.collect.ListMultimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.changes.RecipientType;
@@ -43,11 +44,9 @@ import com.google.inject.assistedinject.Assisted;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class EmailReviewComments implements Runnable, RequestContext {
private static final Logger log = LoggerFactory.getLogger(EmailReviewComments.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
// TODO(dborowitz/wyatta): Rationalize these arguments so HTML and text templates are operating
@@ -150,7 +149,7 @@ public class EmailReviewComments implements Runnable, RequestContext {
cm.setAccountsToNotify(accountsToNotify);
cm.send();
} catch (Exception e) {
log.error("Cannot email comments for " + patchSet.getId(), e);
logger.atSevere().withCause(e).log("Cannot email comments for %s", patchSet.getId());
} finally {
requestContext.setContext(old);
if (db != null) {

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.server.change;
import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
import com.google.common.flogger.FluentLogger;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
@@ -34,13 +35,10 @@ import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevFlag;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Resolve in which tags and branches a commit is included. */
public class IncludedInResolver {
private static final Logger log = LoggerFactory.getLogger(IncludedInResolver.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static Result resolve(Repository repo, RevWalk rw, RevCommit commit) throws IOException {
RevFlag flag = newFlag(rw);
@@ -206,13 +204,11 @@ public class IncludedInResolver {
} catch (MissingObjectException notHere) {
// Log the problem with this branch, but keep processing.
//
log.warn(
"Reference "
+ ref.getName()
+ " in "
+ repo.getDirectory()
+ " points to dangling object "
+ ref.getObjectId());
logger
.atWarning()
.log(
"Reference %s in %s points to dangling object %s",
ref.getName(), repo.getDirectory(), ref.getObjectId());
continue;
}
commitToRef.put(commit, ref.getName());

View File

@@ -22,6 +22,7 @@ import com.google.common.base.Enums;
import com.google.common.base.MoreObjects;
import com.google.common.cache.Cache;
import com.google.common.cache.Weigher;
import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.UncheckedExecutionException;
import com.google.gerrit.extensions.client.SubmitType;
import com.google.gerrit.reviewdb.client.Branch;
@@ -46,12 +47,10 @@ import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class MergeabilityCacheImpl implements MergeabilityCache {
private static final Logger log = LoggerFactory.getLogger(MergeabilityCacheImpl.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String CACHE_NAME = "mergeability";
@@ -213,11 +212,12 @@ public class MergeabilityCacheImpl implements MergeabilityCache {
}
});
} catch (ExecutionException | UncheckedExecutionException e) {
log.error(
String.format(
logger
.atSevere()
.withCause(e.getCause())
.log(
"Error checking mergeability of %s into %s (%s)",
key.commit.name(), key.into.name(), key.submitType.name()),
e.getCause());
key.commit.name(), key.into.name(), key.submitType.name());
return false;
}
}

View File

@@ -22,6 +22,7 @@ import static com.google.gerrit.server.notedb.ReviewerStateInternal.REVIEWER;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.changes.RecipientType;
import com.google.gerrit.extensions.restapi.AuthException;
@@ -63,11 +64,9 @@ import java.util.Collections;
import java.util.List;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.transport.ReceiveCommand;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PatchSetInserter implements BatchUpdateOp {
private static final Logger log = LoggerFactory.getLogger(PatchSetInserter.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
PatchSetInserter create(ChangeNotes notes, PatchSet.Id psId, ObjectId commitId);
@@ -301,7 +300,10 @@ public class PatchSetInserter implements BatchUpdateOp {
cm.setAccountsToNotify(accountsToNotify);
cm.send();
} catch (Exception err) {
log.error("Cannot send email for new patch set on change " + change.getId(), err);
logger
.atSevere()
.withCause(err)
.log("Cannot send email for new patch set on change %s", change.getId());
}
}

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.server.change;
import com.google.auto.value.AutoValue;
import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.RestApiException;
@@ -38,12 +39,10 @@ import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Utility methods related to rebasing changes. */
public class RebaseUtil {
private static final Logger log = LoggerFactory.getLogger(RebaseUtil.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Provider<InternalChangeQuery> queryProvider;
private final ChangeNotes.Factory notesFactory;
@@ -69,10 +68,10 @@ public class RebaseUtil {
} catch (RestApiException e) {
return false;
} catch (OrmException | IOException e) {
log.warn(
String.format(
"Error checking if patch set %s on %s can be rebased", patchSet.getId(), dest),
e);
logger
.atWarning()
.withCause(e)
.log("Error checking if patch set %s on %s can be rebased", patchSet.getId(), dest);
return false;
}
}

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.change;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.RestApiException;
@@ -35,11 +36,9 @@ import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.assistedinject.Assisted;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SetAssigneeOp implements BatchUpdateOp {
private static final Logger log = LoggerFactory.getLogger(SetAssigneeOp.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
SetAssigneeOp create(IdentifiedUser assignee);
@@ -127,7 +126,10 @@ public class SetAssigneeOp implements BatchUpdateOp {
cm.setFrom(user.get().getAccountId());
cm.send();
} catch (Exception err) {
log.error("Cannot send email to new assignee of change " + change.getId(), err);
logger
.atSevere()
.withCause(err)
.log("Cannot send email to new assignee of change %s", change.getId());
}
assigneeChanged.fire(
change, ctx.getAccount(), oldAssignee != null ? oldAssignee.state() : null, ctx.getWhen());

View File

@@ -23,6 +23,7 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.Ordering;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.git.GitRepositoryManager;
@@ -46,8 +47,6 @@ import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevFlag;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Helper to sort {@link ChangeData}s based on {@link RevWalk} ordering.
@@ -63,7 +62,7 @@ import org.slf4j.LoggerFactory;
* of the changes was updated.
*/
public class WalkSorter {
private static final Logger log = LoggerFactory.getLogger(WalkSorter.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final Ordering<List<PatchSetData>> PROJECT_LIST_SORTER =
Ordering.natural()
@@ -237,7 +236,10 @@ public class WalkSorter {
RevCommit c = rw.parseCommit(id);
byCommit.put(c, PatchSetData.create(cd, maxPs, c));
} catch (MissingObjectException | IncorrectObjectTypeException e) {
log.warn("missing commit " + id.name() + " for patch set " + maxPs.getId(), e);
logger
.atWarning()
.withCause(e)
.log("missing commit %s for patch set %s", id.name(), maxPs.getId());
}
}
return byCommit;

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.server.config;
import com.google.common.collect.ImmutableSet;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.common.data.PermissionRule;
import com.google.gerrit.server.account.GroupBackend;
@@ -25,11 +26,11 @@ import com.google.gerrit.server.util.ThreadLocalRequestContext;
import com.google.inject.Inject;
import com.google.inject.Provider;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Loads {@link AdministrateServerGroups} from {@code gerrit.config}. */
public class AdministrateServerGroupsProvider implements Provider<ImmutableSet<GroupReference>> {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final ImmutableSet<GroupReference> groups;
@Inject
@@ -48,8 +49,7 @@ public class AdministrateServerGroupsProvider implements Provider<ImmutableSet<G
if (g != null) {
builder.add(g);
} else {
Logger log = LoggerFactory.getLogger(getClass());
log.warn("Group \"{}\" not available, skipping.", name);
logger.atWarning().log("Group \"%s\" not available, skipping.", name);
}
}
groups = builder.build();

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.config;
import static java.util.stream.Collectors.joining;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.server.notedb.NotesMigration;
import com.google.gerrit.server.securestore.SecureStore;
@@ -31,8 +32,6 @@ import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.util.FS;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Provides {@link Config} annotated with {@link GerritServerConfig}.
@@ -44,7 +43,7 @@ import org.slf4j.LoggerFactory;
*/
@Singleton
public class GerritServerConfigProvider implements Provider<Config> {
private static final Logger log = LoggerFactory.getLogger(GerritServerConfigProvider.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final SitePaths site;
private final SecureStore secureStore;
@@ -78,7 +77,7 @@ public class GerritServerConfigProvider implements Provider<Config> {
public GerritConfig loadConfig() {
FileBasedConfig baseConfig = loadConfig(null, site.gerrit_config);
if (!baseConfig.getFile().exists()) {
log.info("No " + site.gerrit_config.toAbsolutePath() + "; assuming defaults");
logger.atInfo().log("No %s; assuming defaults", site.gerrit_config.toAbsolutePath());
}
FileBasedConfig noteDbConfigOverBaseConfig = loadConfig(baseConfig, site.notedb_config);

View File

@@ -14,18 +14,17 @@
package com.google.gerrit.server.config;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Issues a configuration reload from the GerritServerConfigProvider and notify all listeners. */
@Singleton
public class GerritServerConfigReloader {
private static final Logger log = LoggerFactory.getLogger(GerritServerConfigReloader.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GerritServerConfigProvider configProvider;
private final DynamicSet<GerritConfigListener> configListeners;
@@ -42,9 +41,9 @@ public class GerritServerConfigReloader {
* reload is fully completed before a new one starts.
*/
public List<ConfigUpdatedEvent.Update> reloadConfig() {
log.info("Starting server configuration reload");
logger.atInfo().log("Starting server configuration reload");
List<ConfigUpdatedEvent.Update> updates = fireUpdatedConfigEvent(configProvider.updateConfig());
log.info("Server configuration reload completed succesfully");
logger.atInfo().log("Server configuration reload completed succesfully");
return updates;
}

View File

@@ -17,17 +17,16 @@ package com.google.gerrit.server.config;
import static java.nio.file.Files.isExecutable;
import static java.nio.file.Files.isRegularFile;
import com.google.common.flogger.FluentLogger;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class GitwebCgiConfig {
private static final Logger log = LoggerFactory.getLogger(GitwebCgiConfig.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public GitwebCgiConfig disabled() {
return new GitwebCgiConfig();
@@ -84,11 +83,11 @@ public class GitwebCgiConfig {
} else if (isRegularFile(pkgCgi) && isExecutable(pkgCgi)) {
// Use the OS packaged CGI.
//
log.debug("Assuming gitweb at " + pkgCgi);
logger.atFine().log("Assuming gitweb at %s", pkgCgi);
cgi = pkgCgi;
} else {
log.warn("gitweb not installed (no " + pkgCgi + " found)");
logger.atWarning().log("gitweb not installed (no %s found)", pkgCgi);
cgi = null;
resourcePaths = new String[] {};
}

View File

@@ -19,6 +19,7 @@ import static com.google.common.base.Strings.emptyToNull;
import static com.google.common.base.Strings.isNullOrEmpty;
import static com.google.common.base.Strings.nullToEmpty;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GitwebType;
import com.google.gerrit.common.data.ParameterizedString;
@@ -36,11 +37,9 @@ import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class GitwebConfig {
private static final Logger log = LoggerFactory.getLogger(GitwebConfig.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static boolean isDisabled(Config cfg) {
return isEmptyString(cfg, "gitweb", null, "url")
@@ -124,10 +123,10 @@ public class GitwebConfig {
if (isValidPathSeparator(c)) {
type.setPathSeparator(firstNonNull(c, defaultType.getPathSeparator()));
} else {
log.warn("Invalid gitweb.pathSeparator: " + c);
logger.atWarning().log("Invalid gitweb.pathSeparator: %s", c);
}
} else {
log.warn("gitweb.pathSeparator is not a single character: " + pathSeparator);
logger.atWarning().log("gitweb.pathSeparator is not a single character: %s", pathSeparator);
}
}
return type;

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.server.config;
import com.google.common.collect.ImmutableSet;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.account.GroupBackend;
@@ -25,11 +26,10 @@ import com.google.gerrit.server.util.ThreadLocalRequestContext;
import com.google.inject.Provider;
import java.util.List;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Parses groups referenced in the {@code gerrit.config} file. */
public abstract class GroupSetProvider implements Provider<Set<AccountGroup.UUID>> {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
protected Set<AccountGroup.UUID> groupIds;
@@ -46,8 +46,7 @@ public abstract class GroupSetProvider implements Provider<Set<AccountGroup.UUID
if (g != null) {
builder.add(g.getUUID());
} else {
Logger log = LoggerFactory.getLogger(getClass());
log.warn("Group \"{}\" not available, skipping.", n);
logger.atWarning().log("Group \"%s\" not available, skipping.", n);
}
}
groupIds = builder.build();

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.config;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.plugins.Plugin;
import com.google.gerrit.server.plugins.ReloadPluginListener;
@@ -35,12 +36,11 @@ import org.eclipse.jgit.internal.storage.file.FileSnapshot;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.util.FS;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class PluginConfigFactory implements ReloadPluginListener {
private static final Logger log = LoggerFactory.getLogger(PluginConfigFactory.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String EXTENSION = ".config";
private final SitePaths site;
@@ -222,7 +222,7 @@ public class PluginConfigFactory implements ReloadPluginListener {
GlobalPluginConfig pluginConfig = new GlobalPluginConfig(pluginName, cfg, secureStore);
pluginConfigs.put(pluginName, pluginConfig);
if (!cfg.getFile().exists()) {
log.info("No " + pluginConfigFile.toAbsolutePath() + "; assuming defaults");
logger.atInfo().log("No %s; assuming defaults", pluginConfigFile.toAbsolutePath());
return pluginConfig;
}
@@ -230,9 +230,9 @@ public class PluginConfigFactory implements ReloadPluginListener {
cfg.load();
} catch (ConfigInvalidException e) {
// This is an error in user input, don't spam logs with a stack trace.
log.warn("Failed to load " + pluginConfigFile.toAbsolutePath() + ": " + e);
logger.atWarning().log("Failed to load %s: %s", pluginConfigFile.toAbsolutePath(), e);
} catch (IOException e) {
log.warn("Failed to load " + pluginConfigFile.toAbsolutePath(), e);
logger.atWarning().withCause(e).log("Failed to load %s", pluginConfigFile.toAbsolutePath());
}
return pluginConfig;

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.config;
import static java.util.stream.Collectors.toList;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.annotations.ExtensionPoint;
import com.google.gerrit.extensions.api.projects.ConfigValue;
import com.google.gerrit.extensions.api.projects.ProjectConfigEntryType;
@@ -36,8 +37,6 @@ import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ExtensionPoint
public class ProjectConfigEntry {
@@ -299,7 +298,7 @@ public class ProjectConfigEntry {
public void onUpdate(Project.NameKey project, Long oldValue, Long newValue) {}
public static class UpdateChecker implements GitReferenceUpdatedListener {
private static final Logger log = LoggerFactory.getLogger(UpdateChecker.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GitRepositoryManager repoManager;
private final DynamicMap<ProjectConfigEntry> pluginConfigEntries;
@@ -350,9 +349,10 @@ public class ProjectConfigEntry {
}
}
} catch (IOException | ConfigInvalidException e) {
log.error(
String.format("Failed to check if plugin config of project %s was updated.", p.get()),
e);
logger
.atSevere()
.withCause(e)
.log("Failed to check if plugin config of project %s was updated.", p.get());
}
}

View File

@@ -20,6 +20,7 @@ import static java.time.ZoneId.systemDefault;
import com.google.auto.value.AutoValue;
import com.google.auto.value.extension.memoized.Memoized;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import java.time.DayOfWeek;
import java.time.Duration;
@@ -32,8 +33,6 @@ import java.util.Locale;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* This class reads a schedule for running a periodic background job from a Git config.
@@ -101,7 +100,7 @@ import org.slf4j.LoggerFactory;
*/
@AutoValue
public abstract class ScheduleConfig {
private static final Logger log = LoggerFactory.getLogger(ScheduleConfig.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@VisibleForTesting static final String KEY_INTERVAL = "interval";
@VisibleForTesting static final String KEY_STARTTIME = "startTime";
@@ -157,28 +156,30 @@ public abstract class ScheduleConfig {
private boolean isInvalidOrMissing(long interval, long initialDelay) {
String key = section() + (subsection() != null ? "." + subsection() : "");
if (interval == MISSING_CONFIG && initialDelay == MISSING_CONFIG) {
log.info("No schedule configuration for \"{}\".", key);
logger.atInfo().log("No schedule configuration for \"%s\".", key);
return true;
}
if (interval == MISSING_CONFIG) {
log.error(
"Incomplete schedule configuration for \"{}\" is ignored. Missing value for \"{}\".",
key,
key + "." + keyInterval());
logger
.atSevere()
.log(
"Incomplete schedule configuration for \"%s\" is ignored. Missing value for \"%s\".",
key, key + "." + keyInterval());
return true;
}
if (initialDelay == MISSING_CONFIG) {
log.error(
"Incomplete schedule configuration for \"{}\" is ignored. Missing value for \"{}\".",
key,
key + "." + keyStartTime());
logger
.atSevere()
.log(
"Incomplete schedule configuration for \"%s\" is ignored. Missing value for \"%s\".",
key, key + "." + keyStartTime());
return true;
}
if (interval <= 0 || initialDelay < 0) {
log.error("Invalid schedule configuration for \"{}\" is ignored. ", key);
logger.atSevere().log("Invalid schedule configuration for \"%s\" is ignored. ", key);
return true;
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.config;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.TrackingId;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -26,18 +27,17 @@ import java.util.List;
import java.util.Set;
import java.util.regex.PatternSyntaxException;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Provides a list of all configured {@link TrackingFooter}s. */
@Singleton
public class TrackingFootersProvider implements Provider<TrackingFooters> {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static String TRACKING_ID_TAG = "trackingid";
private static String FOOTER_TAG = "footer";
private static String SYSTEM_TAG = "system";
private static String REGEX_TAG = "match";
private final List<TrackingFooter> trackingFooters = new ArrayList<>();
private static final Logger log = LoggerFactory.getLogger(TrackingFootersProvider.class);
@Inject
TrackingFootersProvider(@GerritServerConfig Config cfg) {
@@ -50,36 +50,32 @@ public class TrackingFootersProvider implements Provider<TrackingFooters> {
if (footers.isEmpty()) {
configValid = false;
log.error(
"Missing " + TRACKING_ID_TAG + "." + name + "." + FOOTER_TAG + " in gerrit.config");
logger
.atSevere()
.log("Missing %s.%s.%s in gerrit.config", TRACKING_ID_TAG, name, FOOTER_TAG);
}
String system = cfg.getString(TRACKING_ID_TAG, name, SYSTEM_TAG);
if (system == null || system.isEmpty()) {
configValid = false;
log.error(
"Missing " + TRACKING_ID_TAG + "." + name + "." + SYSTEM_TAG + " in gerrit.config");
logger
.atSevere()
.log("Missing %s.%s.%s in gerrit.config", TRACKING_ID_TAG, name, SYSTEM_TAG);
} else if (system.length() > TrackingId.TRACKING_SYSTEM_MAX_CHAR) {
configValid = false;
log.error(
"String too long \""
+ system
+ "\" in gerrit.config "
+ TRACKING_ID_TAG
+ "."
+ name
+ "."
+ SYSTEM_TAG
+ " (max "
+ TrackingId.TRACKING_SYSTEM_MAX_CHAR
+ " char)");
logger
.atSevere()
.log(
"String too long \"%s\" in gerrit.config %s.%s.%s (max %d char)",
system, TRACKING_ID_TAG, name, SYSTEM_TAG, TrackingId.TRACKING_SYSTEM_MAX_CHAR);
}
String match = cfg.getString(TRACKING_ID_TAG, name, REGEX_TAG);
if (match == null || match.isEmpty()) {
configValid = false;
log.error(
"Missing " + TRACKING_ID_TAG + "." + name + "." + REGEX_TAG + " in gerrit.config");
logger
.atSevere()
.log("Missing %s.%s.%s in gerrit.config", TRACKING_ID_TAG, name, REGEX_TAG);
}
if (configValid) {
@@ -88,17 +84,11 @@ public class TrackingFootersProvider implements Provider<TrackingFooters> {
trackingFooters.add(new TrackingFooter(footer, match, system));
}
} catch (PatternSyntaxException e) {
log.error(
"Invalid pattern \""
+ match
+ "\" in gerrit.config "
+ TRACKING_ID_TAG
+ "."
+ name
+ "."
+ REGEX_TAG
+ ": "
+ e.getMessage());
logger
.atSevere()
.log(
"Invalid pattern \"%s\" in gerrit.config %s.%s.%s: %s",
match, TRACKING_ID_TAG, name, REGEX_TAG, e.getMessage());
}
}
}

View File

@@ -20,6 +20,7 @@ import static org.pegdown.Extensions.HARDWRAPS;
import static org.pegdown.Extensions.SUPPRESS_ALL_HTML;
import com.google.common.base.Strings;
import com.google.common.flogger.FluentLogger;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
@@ -37,11 +38,9 @@ import org.pegdown.ast.HeaderNode;
import org.pegdown.ast.Node;
import org.pegdown.ast.RootNode;
import org.pegdown.ast.TextNode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MarkdownFormatter {
private static final Logger log = LoggerFactory.getLogger(MarkdownFormatter.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String defaultCss;
@@ -51,7 +50,7 @@ public class MarkdownFormatter {
try {
src = readPegdownCss(file);
} catch (IOException err) {
log.warn("Cannot load pegdown.css", err);
logger.atWarning().withCause(err).log("Cannot load pegdown.css");
src = "";
}
defaultCss = file.get() ? null : src;
@@ -64,7 +63,7 @@ public class MarkdownFormatter {
try {
return readPegdownCss(new AtomicBoolean());
} catch (IOException err) {
log.warn("Cannot load pegdown.css", err);
logger.atWarning().withCause(err).log("Cannot load pegdown.css");
return "";
}
}

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.documentation;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.flogger.FluentLogger;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.IOException;
@@ -36,12 +37,10 @@ import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IndexOutput;
import org.apache.lucene.store.RAMDirectory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class QueryDocumentationExecutor {
private static final Logger log = LoggerFactory.getLogger(QueryDocumentationExecutor.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static Map<String, Float> WEIGHTS =
ImmutableMap.of(
@@ -70,7 +69,7 @@ public class QueryDocumentationExecutor {
searcher = new IndexSearcher(reader);
parser = new SimpleQueryParser(new StandardAnalyzer(), WEIGHTS);
} catch (IOException e) {
log.error("Cannot initialize documentation full text index", e);
logger.atSevere().withCause(e).log("Cannot initialize documentation full text index");
searcher = null;
parser = null;
}
@@ -107,7 +106,7 @@ public class QueryDocumentationExecutor {
byte[] buffer = new byte[4096];
InputStream index = getClass().getResourceAsStream(Constants.INDEX_ZIP);
if (index == null) {
log.warn("No index available");
logger.atWarning().log("No index available");
return null;
}

View File

@@ -18,6 +18,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.flogger.FluentLogger;
import com.google.common.io.ByteStreams;
import com.google.gerrit.extensions.restapi.RawInput;
import java.io.IOException;
@@ -32,13 +33,10 @@ import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectInserter;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** A {@code TreeModification} which changes the content of a file. */
public class ChangeFileContentModification implements TreeModification {
private static final Logger log = LoggerFactory.getLogger(ChangeFileContentModification.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final String filePath;
private final RawInput newContent;
@@ -97,9 +95,9 @@ public class ChangeFileContentModification implements TreeModification {
} catch (IOException e) {
String message =
String.format("Could not change the content of %s", dirCacheEntry.getPathString());
log.error(message, e);
logger.atSevere().withCause(e).log(message);
} catch (InvalidObjectIdException e) {
log.error("Invalid object id in submodule link", e);
logger.atSevere().withCause(e).log("Invalid object id in submodule link");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicItem;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.AuthException;
@@ -37,13 +38,11 @@ import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Distributes Events to listeners if they are allowed to see them */
@Singleton
public class EventBroker implements EventDispatcher {
private static final Logger log = LoggerFactory.getLogger(EventBroker.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends LifecycleModule {
@Override
@@ -203,7 +202,9 @@ public class EventBroker implements EventDispatcher {
.getChange();
return isVisibleTo(change, user);
} catch (NoSuchChangeException e) {
log.debug("Change {} cannot be found, falling back on ref visibility check", cid.id);
logger
.atFine()
.log("Change %s cannot be found, falling back on ref visibility check", cid.id);
}
}
return isVisibleTo(refEvent.getBranchNameKey(), user);

View File

@@ -19,6 +19,7 @@ import static java.util.Comparator.comparing;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.common.data.LabelTypes;
@@ -80,12 +81,10 @@ import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class EventFactory {
private static final Logger log = LoggerFactory.getLogger(EventFactory.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final AccountCache accountCache;
private final Emails emails;
@@ -135,7 +134,7 @@ public class EventFactory {
try (ReviewDb db = schema.open()) {
return asChangeAttribute(db, change);
} catch (OrmException e) {
log.error("Cannot open database connection", e);
logger.atSevere().withCause(e).log("Cannot open database connection");
return new ChangeAttribute();
}
}
@@ -158,7 +157,10 @@ public class EventFactory {
try {
a.commitMessage = changeDataFactory.create(db, change).commitMessage();
} catch (Exception e) {
log.error("Error while getting full commit message for change {}", a.number, e);
logger
.atSevere()
.withCause(e)
.log("Error while getting full commit message for change %d", a.number);
}
a.url = getChangeUrl(change);
a.owner = asAccountAttribute(change.getOwner());
@@ -450,9 +452,9 @@ public class EventFactory {
patchSetAttribute.files.add(p);
}
} catch (PatchListObjectTooLargeException e) {
log.warn("Cannot get patch list: " + e.getMessage());
logger.atWarning().log("Cannot get patch list: %s", e.getMessage());
} catch (PatchListNotAvailableException e) {
log.error("Cannot get patch list", e);
logger.atSevere().withCause(e).log("Cannot get patch list");
}
}
@@ -476,7 +478,7 @@ public class EventFactory {
try (ReviewDb db = schema.open()) {
return asPatchSetAttribute(db, revWalk, change, patchSet);
} catch (OrmException e) {
log.error("Cannot open database connection", e);
logger.atSevere().withCause(e).log("Cannot open database connection");
return new PatchSetAttribute();
}
}
@@ -523,11 +525,11 @@ public class EventFactory {
}
p.kind = changeKindCache.getChangeKind(db, change, patchSet);
} catch (IOException | OrmException e) {
log.error("Cannot load patch set data for {}", patchSet.getId(), e);
logger.atSevere().withCause(e).log("Cannot load patch set data for %s", patchSet.getId());
} catch (PatchListObjectTooLargeException e) {
log.warn(String.format("Cannot get size information for %s: %s", pId, e.getMessage()));
logger.atWarning().log("Cannot get size information for %s: %s", pId, e.getMessage());
} catch (PatchListNotAvailableException e) {
log.error("Cannot get size information for {}.", pId, e);
logger.atSevere().withCause(e).log("Cannot get size information for %s.", pId);
}
return p;
}

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.common.data.LabelTypes;
import com.google.gerrit.extensions.common.AccountInfo;
@@ -69,8 +70,6 @@ import java.util.Map.Entry;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class StreamEventsApiListener
@@ -89,7 +88,7 @@ public class StreamEventsApiListener
RevisionCreatedListener,
TopicEditedListener,
VoteDeletedListener {
private static final Logger log = LoggerFactory.getLogger(StreamEventsApiListener.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends AbstractModule {
@Override
@@ -267,7 +266,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -283,7 +282,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -301,7 +300,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -321,7 +320,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -339,7 +338,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
}
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -366,7 +365,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -391,7 +390,7 @@ public class StreamEventsApiListener
try {
dispatcher.get().postEvent(refName, event);
} catch (PermissionBackendException e) {
log.error("error while posting event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -411,7 +410,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -429,7 +428,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -447,7 +446,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -465,7 +464,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -480,7 +479,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -495,7 +494,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -515,7 +514,7 @@ public class StreamEventsApiListener
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
log.error("Failed to dispatch event", e);
logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -25,12 +26,10 @@ import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class AssigneeChanged {
private static final Logger log = LoggerFactory.getLogger(AssigneeChanged.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<AssigneeChangedListener> listeners;
private final EventUtil util;
@@ -61,7 +60,7 @@ public class AssigneeChanged {
}
}
} catch (OrmException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -32,12 +33,10 @@ import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class ChangeAbandoned {
private static final Logger log = LoggerFactory.getLogger(ChangeAbandoned.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ChangeAbandonedListener> listeners;
private final EventUtil util;
@@ -75,13 +74,13 @@ public class ChangeAbandoned {
}
}
} catch (PatchListObjectTooLargeException e) {
log.warn("Couldn't fire event: " + e.getMessage());
logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -32,12 +33,10 @@ import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class ChangeMerged {
private static final Logger log = LoggerFactory.getLogger(ChangeMerged.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ChangeMergedListener> listeners;
private final EventUtil util;
@@ -69,13 +68,13 @@ public class ChangeMerged {
}
}
} catch (PatchListObjectTooLargeException e) {
log.warn("Couldn't fire event: " + e.getMessage());
logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -32,12 +33,10 @@ import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class ChangeRestored {
private static final Logger log = LoggerFactory.getLogger(ChangeRestored.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ChangeRestoredListener> listeners;
private final EventUtil util;
@@ -69,13 +68,13 @@ public class ChangeRestored {
}
}
} catch (PatchListObjectTooLargeException e) {
log.warn("Couldn't fire event: " + e.getMessage());
logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.events.ChangeRevertedListener;
@@ -23,12 +24,10 @@ import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class ChangeReverted {
private static final Logger log = LoggerFactory.getLogger(ChangeReverted.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ChangeRevertedListener> listeners;
private final EventUtil util;
@@ -53,7 +52,7 @@ public class ChangeReverted {
}
}
} catch (OrmException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ApprovalInfo;
@@ -34,12 +35,10 @@ import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class CommentAdded {
private static final Logger log = LoggerFactory.getLogger(CommentAdded.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<CommentAddedListener> listeners;
private final EventUtil util;
@@ -79,13 +78,13 @@ public class CommentAdded {
}
}
} catch (PatchListObjectTooLargeException e) {
log.warn("Couldn't fire event: " + e.getMessage());
logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.extensions.events;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.client.ListChangesOption;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ApprovalInfo;
@@ -41,12 +42,10 @@ import java.sql.Timestamp;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class EventUtil {
private static final Logger log = LoggerFactory.getLogger(EventUtil.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final ImmutableSet<ListChangesOption> CHANGE_OPTIONS;
@@ -121,26 +120,24 @@ public class EventUtil {
}
public void logEventListenerError(Object event, Object listener, Exception error) {
if (log.isDebugEnabled()) {
log.debug(
"Error in event listener {} for event {}",
listener.getClass().getName(),
event.getClass().getName(),
error);
} else {
log.warn(
"Error in event listener {} for event {}: {}",
listener.getClass().getName(),
event.getClass().getName(),
error.getMessage());
}
logger
.atWarning()
.log(
"Error in event listener %s for event %s: %s",
listener.getClass().getName(), event.getClass().getName(), error.getMessage());
logger
.atFine()
.withCause(error)
.log("Cause of error in event listener %s:", listener.getClass().getName());
}
public static void logEventListenerError(Object listener, Exception error) {
if (log.isDebugEnabled()) {
log.debug("Error in event listener {}", listener.getClass().getName(), error);
} else {
log.warn("Error in event listener {}: {}", listener.getClass().getName(), error.getMessage());
}
logger
.atWarning()
.log("Error in event listener %s: %s", listener.getClass().getName(), error.getMessage());
logger
.atFine()
.withCause(error)
.log("Cause of error in event listener %s", listener.getClass().getName());
}
}

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -28,12 +29,10 @@ import com.google.inject.Singleton;
import java.sql.Timestamp;
import java.util.Collection;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class HashtagsEdited {
private static final Logger log = LoggerFactory.getLogger(HashtagsEdited.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<HashtagsEditedListener> listeners;
private final EventUtil util;
@@ -66,7 +65,7 @@ public class HashtagsEdited {
}
}
} catch (OrmException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -25,12 +26,10 @@ import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class PrivateStateChanged {
private static final Logger log = LoggerFactory.getLogger(PrivateStateChanged.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<PrivateStateChangedListener> listeners;
private final EventUtil util;
@@ -55,7 +54,7 @@ public class PrivateStateChanged {
}
}
} catch (OrmException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.collect.Lists;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -34,12 +35,10 @@ import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class ReviewerAdded {
private static final Logger log = LoggerFactory.getLogger(ReviewerAdded.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ReviewerAddedListener> listeners;
private final EventUtil util;
@@ -76,13 +75,13 @@ public class ReviewerAdded {
}
}
} catch (PatchListObjectTooLargeException e) {
log.warn("Couldn't fire event: " + e.getMessage());
logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ApprovalInfo;
@@ -34,12 +35,10 @@ import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class ReviewerDeleted {
private static final Logger log = LoggerFactory.getLogger(ReviewerDeleted.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ReviewerDeletedListener> listeners;
private final EventUtil util;
@@ -83,13 +82,13 @@ public class ReviewerDeleted {
}
}
} catch (PatchListObjectTooLargeException e) {
log.warn("Couldn't fire event: " + e.getMessage());
logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -32,12 +33,10 @@ import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class RevisionCreated {
private static final Logger log = LoggerFactory.getLogger(RevisionCreated.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final RevisionCreated DISABLED =
new RevisionCreated() {
@@ -89,13 +88,13 @@ public class RevisionCreated {
}
}
} catch (PatchListObjectTooLargeException e) {
log.warn("Couldn't fire event: " + e.getMessage());
logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -25,12 +26,10 @@ import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class TopicEdited {
private static final Logger log = LoggerFactory.getLogger(TopicEdited.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<TopicEditedListener> listeners;
private final EventUtil util;
@@ -56,7 +55,7 @@ public class TopicEdited {
}
}
} catch (OrmException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ApprovalInfo;
@@ -34,12 +35,10 @@ import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class VoteDeleted {
private static final Logger log = LoggerFactory.getLogger(VoteDeleted.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<VoteDeletedListener> listeners;
private final EventUtil util;
@@ -83,13 +82,13 @@ public class VoteDeleted {
}
}
} catch (PatchListObjectTooLargeException e) {
log.warn("Couldn't fire event: " + e.getMessage());
logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -25,12 +26,10 @@ import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class WorkInProgressStateChanged {
private static final Logger log = LoggerFactory.getLogger(WorkInProgressStateChanged.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<WorkInProgressStateChangedListener> listeners;
private final EventUtil util;
@@ -56,7 +55,7 @@ public class WorkInProgressStateChanged {
}
}
} catch (OrmException e) {
log.error("Couldn't fire event", e);
logger.atSevere().withCause(e).log("Couldn't fire event");
}
}

View File

@@ -21,6 +21,7 @@ import static java.util.stream.Collectors.toList;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Predicate;
import com.google.common.collect.Streams;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.api.access.GlobalOrPluginPermission;
import com.google.gerrit.extensions.conditions.BooleanCondition;
@@ -47,12 +48,10 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class UiActions {
private static final Logger log = LoggerFactory.getLogger(UiActions.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static Predicate<UiAction.Description> enabled() {
return UiAction.Description::isEnabled;
@@ -131,8 +130,10 @@ public class UiActions {
try {
view = e.getProvider().get();
} catch (RuntimeException err) {
log.error(
String.format("error creating view %s.%s", e.getPluginName(), e.getExportName()), err);
logger
.atSevere()
.withCause(err)
.log("error creating view %s.%s", e.getPluginName(), e.getExportName());
return null;
}
@@ -154,8 +155,10 @@ public class UiActions {
try {
globalRequired = GlobalPermission.fromAnnotation(e.getPluginName(), view.getClass());
} catch (PermissionBackendException err) {
log.error(
String.format("exception testing view %s.%s", e.getPluginName(), e.getExportName()), err);
logger
.atSevere()
.withCause(err)
.log("exception testing view %s.%s", e.getPluginName(), e.getExportName());
return null;
}
if (!globalRequired.isEmpty()) {

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.server.git;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GarbageCollectionResult;
import com.google.gerrit.extensions.events.GarbageCollectorListener;
import com.google.gerrit.extensions.registration.DynamicSet;
@@ -35,11 +36,9 @@ import org.eclipse.jgit.lib.NullProgressMonitor;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.TextProgressMonitor;
import org.eclipse.jgit.storage.pack.PackConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class GarbageCollection {
private static final Logger log = LoggerFactory.getLogger(GarbageCollection.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GitRepositoryManager repoManager;
private final GarbageCollectionQueue gcQueue;
@@ -118,7 +117,7 @@ public class GarbageCollection {
try {
l.onGarbageCollected(event);
} catch (RuntimeException e) {
log.warn("Failure in GarbageCollectorListener", e);
logger.atWarning().withCause(e).log("Failure in GarbageCollectorListener");
}
}
}
@@ -139,7 +138,7 @@ public class GarbageCollection {
}
b.append(s);
}
log.info(b.toString());
logger.atInfo().log(b.toString());
}
private static void logGcConfiguration(
@@ -179,7 +178,7 @@ public class GarbageCollection {
print(writer, "failed.\n\n");
StringBuilder b = new StringBuilder();
b.append("[").append(projectName.get()).append("]");
log.error(b.toString(), e);
logger.atSevere().withCause(e).log(b.toString());
}
private static void print(PrintWriter writer, String message) {

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.git;
import com.google.common.flogger.backend.Platform;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.SitePaths;
@@ -40,13 +41,17 @@ public class GarbageCollectionLogFile implements LifecycleListener {
@Override
public void stop() {
LogManager.getLogger(GarbageCollection.class).removeAllAppenders();
LogManager.getLogger(GarbageCollectionRunner.class).removeAllAppenders();
getLogger(GarbageCollection.class).removeAllAppenders();
getLogger(GarbageCollectionRunner.class).removeAllAppenders();
}
private static void initLogSystem(Path logdir, boolean rotate) {
initGcLogger(logdir, rotate, LogManager.getLogger(GarbageCollection.class));
initGcLogger(logdir, rotate, LogManager.getLogger(GarbageCollectionRunner.class));
initGcLogger(logdir, rotate, getLogger(GarbageCollection.class));
initGcLogger(logdir, rotate, getLogger(GarbageCollectionRunner.class));
}
private static Logger getLogger(Class<?> clazz) {
return LogManager.getLogger(Platform.getBackend(clazz.getName()).getLoggerName());
}
private static void initGcLogger(Path logdir, boolean rotate, Logger gcLogger) {

View File

@@ -15,16 +15,15 @@
package com.google.gerrit.server.git;
import com.google.common.collect.Lists;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.server.config.GcConfig;
import com.google.gerrit.server.project.ProjectCache;
import com.google.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Runnable to enable scheduling gc to run periodically */
public class GarbageCollectionRunner implements Runnable {
private static final Logger log = LoggerFactory.getLogger(GarbageCollectionRunner.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static class Lifecycle implements LifecycleListener {
private final WorkQueue queue;
@@ -61,7 +60,7 @@ public class GarbageCollectionRunner implements Runnable {
@Override
public void run() {
log.info("Triggering gc on all repositories");
logger.atInfo().log("Triggering gc on all repositories");
garbageCollectionFactory.create().run(Lists.newArrayList(projectCache.all()));
}

View File

@@ -27,6 +27,7 @@ import com.google.common.collect.Multimaps;
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Sets;
import com.google.common.collect.SortedSetMultimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
@@ -44,8 +45,6 @@ import java.util.TreeSet;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.revwalk.RevCommit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Helper for assigning groups to commits during {@code ReceiveCommits}.
@@ -75,7 +74,7 @@ import org.slf4j.LoggerFactory;
* visited, call {@link #getGroups()} for the result.
*/
public class GroupCollector {
private static final Logger log = LoggerFactory.getLogger(GroupCollector.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static List<String> getDefaultGroups(PatchSet ps) {
return ImmutableList.of(ps.getRevision().get());
@@ -281,7 +280,7 @@ public class GroupCollector {
return ObjectId.fromString(group);
} catch (IllegalArgumentException e) {
// Shouldn't happen; some sort of corruption or manual tinkering?
log.warn("group for commit {} is not a SHA-1: {}", forCommit.name(), group);
logger.atWarning().log("group for commit %s is not a SHA-1: %s", forCommit.name(), group);
return null;
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.git;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.reviewdb.client.Project;
@@ -45,13 +46,11 @@ import org.eclipse.jgit.lib.RepositoryCacheConfig;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.storage.file.WindowCacheConfig;
import org.eclipse.jgit.util.FS;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Manages Git repositories stored on the local filesystem. */
@Singleton
public class LocalDiskRepositoryManager implements GitRepositoryManager {
private static final Logger log = LoggerFactory.getLogger(LocalDiskRepositoryManager.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends LifecycleModule {
@Override
@@ -98,7 +97,7 @@ public class LocalDiskRepositoryManager implements GitRepositoryManager {
} else {
desc = String.format("%d", limit);
}
log.info("Defaulting core.streamFileThreshold to {}", desc);
logger.atInfo().log("Defaulting core.streamFileThreshold to %s", desc);
cfg.setStreamFileThreshold(limit);
}
cfg.install();
@@ -193,7 +192,9 @@ public class LocalDiskRepositoryManager implements GitRepositoryManager {
//
File metaConfigLog = new File(db.getDirectory(), "logs/" + RefNames.REFS_CONFIG);
if (!metaConfigLog.getParentFile().mkdirs() || !metaConfigLog.createNewFile()) {
log.error("Failed to create ref log for {} in repository {}", RefNames.REFS_CONFIG, name);
logger
.atSevere()
.log("Failed to create ref log for %s in repository %s", RefNames.REFS_CONFIG, name);
}
return db;
@@ -246,7 +247,10 @@ public class LocalDiskRepositoryManager implements GitRepositoryManager {
Integer.MAX_VALUE,
visitor);
} catch (IOException e) {
log.error("Error walking repository tree {}", visitor.startFolder.toAbsolutePath(), e);
logger
.atSevere()
.withCause(e)
.log("Error walking repository tree %s", visitor.startFolder.toAbsolutePath());
}
}
@@ -286,7 +290,7 @@ public class LocalDiskRepositoryManager implements GitRepositoryManager {
@Override
public FileVisitResult visitFileFailed(Path file, IOException e) {
log.warn(e.getMessage());
logger.atWarning().log(e.getMessage());
return FileVisitResult.CONTINUE;
}
@@ -301,7 +305,7 @@ public class LocalDiskRepositoryManager implements GitRepositoryManager {
Project.NameKey nameKey = getProjectName(startFolder, p);
if (getBasePath(nameKey).equals(startFolder)) {
if (isUnreasonableName(nameKey)) {
log.warn("Ignoring unreasonably named repository {}", p.toAbsolutePath());
logger.atWarning().log("Ignoring unreasonably named repository %s", p.toAbsolutePath());
} else {
found.add(nameKey);
}

View File

@@ -23,6 +23,7 @@ import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.FooterConstants;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.LabelType;
@@ -92,8 +93,6 @@ import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevFlag;
import org.eclipse.jgit.revwalk.RevSort;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Utility methods used during the merge process.
@@ -104,7 +103,7 @@ import org.slf4j.LoggerFactory;
* {@code BatchUpdate}.
*/
public class MergeUtil {
private static final Logger log = LoggerFactory.getLogger(MergeUtil.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static class PluggableCommitMessageGenerator {
private final DynamicSet<ChangeMessageModifier> changeMessageModifiers;
@@ -466,7 +465,7 @@ public class MergeUtil {
try {
return approvalsUtil.byPatchSet(db.get(), notes, user, psId, null, null);
} catch (OrmException e) {
log.error("Can't read approval records for " + psId, e);
logger.atSevere().withCause(e).log("Can't read approval records for %s", psId);
return Collections.emptyList();
}
}
@@ -499,7 +498,7 @@ public class MergeUtil {
try (ObjectInserter ins = new InMemoryInserter(repo)) {
return newThreeWayMerger(ins, repo.getConfig()).merge(new AnyObjectId[] {mergeTip, toMerge});
} catch (LargeObjectException e) {
log.warn("Cannot merge due to LargeObjectException: " + toMerge.name());
logger.atWarning().log("Cannot merge due to LargeObjectException: %s", toMerge.name());
return false;
} catch (NoMergeBaseException e) {
return false;

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.git;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.ChangeMessage;
import com.google.gerrit.reviewdb.client.LabelId;
@@ -47,11 +48,9 @@ import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MergedByPushOp implements BatchUpdateOp {
private static final Logger log = LoggerFactory.getLogger(MergedByPushOp.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
MergedByPushOp create(
@@ -181,7 +180,10 @@ public class MergedByPushOp implements BatchUpdateOp {
cm.setPatchSet(patchSet, info);
cm.send();
} catch (Exception e) {
log.error("Cannot send email for submitted patch set " + psId, e);
logger
.atSevere()
.withCause(e)
.log("Cannot send email for submitted patch set %s", psId);
}
}

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.server.git;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
import com.google.common.base.Strings;
import com.google.common.flogger.FluentLogger;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
@@ -28,8 +29,6 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ProgressMonitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Progress reporting interface that multiplexes multiple sub-tasks.
@@ -48,7 +47,7 @@ import org.slf4j.LoggerFactory;
* multi-line progress messages would be impossible.)
*/
public class MultiProgressMonitor {
private static final Logger log = LoggerFactory.getLogger(MultiProgressMonitor.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
/** Constant indicating the total work units cannot be predicted. */
public static final int UNKNOWN = 0;
@@ -215,10 +214,11 @@ public class MultiProgressMonitor {
String.format(
"(timeout %sms, cancelled)",
TimeUnit.MILLISECONDS.convert(now - deadline, NANOSECONDS));
log.warn(
String.format(
"MultiProgressMonitor worker killed after %sms" + detailMessage, //
TimeUnit.MILLISECONDS.convert(now - overallStart, NANOSECONDS)));
logger
.atWarning()
.log(
"MultiProgressMonitor worker killed after %sms: %s",
TimeUnit.MILLISECONDS.convert(now - overallStart, NANOSECONDS), detailMessage);
}
break;
}
@@ -232,7 +232,7 @@ public class MultiProgressMonitor {
if (!done && workerFuture.isDone()) {
// The worker may not have called end() explicitly, which is likely a
// programming error.
log.warn("MultiProgressMonitor worker did not call end() before returning");
logger.atWarning().log("MultiProgressMonitor worker did not call end() before returning");
end();
}
}

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.server.git;
import com.google.auto.value.AutoValue;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
import com.google.gerrit.extensions.registration.DynamicSet;
@@ -41,12 +42,11 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class SearchingChangeCacheImpl implements GitReferenceUpdatedListener {
private static final Logger log = LoggerFactory.getLogger(SearchingChangeCacheImpl.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static final String ID_CACHE = "changes";
public static class Module extends CacheModule {
@@ -120,7 +120,7 @@ public class SearchingChangeCacheImpl implements GitReferenceUpdatedListener {
}
return Collections.unmodifiableList(cds);
} catch (ExecutionException e) {
log.warn("Cannot fetch changes for " + project, e);
logger.atWarning().withCause(e).log("Cannot fetch changes for %s", project);
return Collections.emptyList();
}
}

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.server.git;
import static org.eclipse.jgit.lib.ObjectIdSerializer.readWithoutMarker;
import static org.eclipse.jgit.lib.ObjectIdSerializer.writeWithoutMarker;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames;
@@ -38,11 +39,9 @@ import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevSort;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class TagSet {
private static final Logger log = LoggerFactory.getLogger(TagSet.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Project.NameKey projectName;
private final Map<String, CachedRef> refs;
@@ -141,7 +140,7 @@ class TagSet {
} catch (IOException err) {
// Defer a cache update until later. No conclusion can be made
// based on an exception reading from the repository storage.
log.warn("Error checking tags of " + projectName, err);
logger.atWarning().withCause(err).log("Error checking tags of %s", projectName);
}
}
} finally {
@@ -185,7 +184,7 @@ class TagSet {
}
}
} catch (IOException e) {
log.warn("Error building tags for repository " + projectName, e);
logger.atWarning().withCause(e).log("Error building tags for repository %s", projectName);
}
}
@@ -302,7 +301,7 @@ class TagSet {
} catch (IncorrectObjectTypeException notCommit) {
flags = new BitSet();
} catch (IOException e) {
log.warn("Error on " + ref.getName() + " of " + projectName, e);
logger.atWarning().withCause(e).log("Error on %s of %s", ref.getName(), projectName);
flags = new BitSet();
}
tags.add(new Tag(id, flags));
@@ -323,7 +322,7 @@ class TagSet {
// For instance, refs from refs/cache-automerge
// will often end up here.
} catch (IOException e) {
log.warn("Error on " + ref.getName() + " of " + projectName, e);
logger.atWarning().withCause(e).log("Error on %s of %s", ref.getName(), projectName);
}
}

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.server.git;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.reviewdb.client.Project;
@@ -44,12 +45,12 @@ import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Delayed execution of tasks using a background thread pool. */
@Singleton
public class WorkQueue {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Lifecycle implements LifecycleListener {
private final WorkQueue workQueue;
@@ -75,12 +76,11 @@ public class WorkQueue {
}
}
private static final Logger log = LoggerFactory.getLogger(WorkQueue.class);
private static final UncaughtExceptionHandler LOG_UNCAUGHT_EXCEPTION =
new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
log.error("WorkQueue thread " + t.getName() + " threw exception", e);
logger.atSevere().withCause(e).log("WorkQueue thread %s threw exception", t.getName());
}
};
@@ -479,7 +479,9 @@ public class WorkQueue {
}
}
} catch (ClassNotFoundException | IllegalArgumentException | IllegalAccessException e) {
log.debug("Cannot get a proper name for TrustedListenableFutureTask: {}", e.getMessage());
logger
.atFine()
.log("Cannot get a proper name for TrustedListenableFutureTask: %s", e.getMessage());
}
return runnable.toString();
}

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.server.git.receive;
import com.google.common.collect.SetMultimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.Capable;
import com.google.gerrit.extensions.restapi.AuthException;
@@ -63,12 +64,10 @@ import org.eclipse.jgit.transport.PreReceiveHook;
import org.eclipse.jgit.transport.ReceiveCommand;
import org.eclipse.jgit.transport.ReceiveCommand.Result;
import org.eclipse.jgit.transport.ReceivePack;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Hook that delegates to {@link ReceiveCommits} in a worker thread. */
public class AsyncReceiveCommits implements PreReceiveHook {
private static final Logger log = LoggerFactory.getLogger(AsyncReceiveCommits.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String TIMEOUT_NAME = "ReceiveCommitsOverallTimeout";
@@ -272,11 +271,12 @@ public class AsyncReceiveCommits implements PreReceiveHook {
w.progress.waitFor(
executor.submit(scopePropagator.wrap(w)), timeoutMillis, TimeUnit.MILLISECONDS);
} catch (ExecutionException e) {
log.warn(
String.format(
logger
.atWarning()
.withCause(e)
.log(
"Error in ReceiveCommits while processing changes for project %s",
projectState.getName()),
e);
projectState.getName());
rp.sendError("internal error while processing changes");
// ReceiveCommits has tried its best to catch errors, so anything at this
// point is very bad.

View File

@@ -14,9 +14,9 @@ java_library(
"//lib:gwtorm",
"//lib/auto:auto-value",
"//lib/auto:auto-value-annotations",
"//lib/flogger:api",
"//lib/guice",
"//lib/guice:guice-assistedinject",
"//lib/jgit/org.eclipse.jgit:jgit",
"//lib/log:api",
],
)

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.server.git.receive;
import static org.eclipse.jgit.lib.RefDatabase.ALL;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
@@ -31,8 +32,6 @@ import org.eclipse.jgit.transport.AdvertiseRefsHook;
import org.eclipse.jgit.transport.BaseReceivePack;
import org.eclipse.jgit.transport.ServiceMayNotContinueException;
import org.eclipse.jgit.transport.UploadPack;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Advertises part of history to git push clients.
@@ -47,7 +46,7 @@ import org.slf4j.LoggerFactory;
* a common ancestor.
*/
public class HackPushNegotiateHook implements AdvertiseRefsHook {
private static final Logger log = LoggerFactory.getLogger(HackPushNegotiateHook.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
/** Size of an additional ".have" line. */
private static final int HAVE_LINE_LEN = 4 + Constants.OBJECT_ID_STRING_LENGTH + 1 + 5 + 1;
@@ -127,7 +126,7 @@ public class HackPushNegotiateHook implements AdvertiseRefsHook {
}
}
} catch (IOException err) {
log.error("error trying to advertise history", err);
logger.atSevere().withCause(err).log("error trying to advertise history");
}
return history;
} finally {

View File

@@ -56,6 +56,7 @@ import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Sets;
import com.google.common.collect.SortedSetMultimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.common.data.LabelType;
@@ -209,12 +210,10 @@ import org.eclipse.jgit.transport.ReceiveCommand.Result;
import org.eclipse.jgit.transport.ReceivePack;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.Option;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Receives change upload using the Git receive-pack protocol. */
class ReceiveCommits {
private static final Logger log = LoggerFactory.getLogger(ReceiveCommits.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private enum ReceiveError {
CONFIG_UPDATE(
@@ -1738,7 +1737,7 @@ class ReceiveCommits {
try {
return repo.getFullBranch();
} catch (IOException e) {
log.error("Cannot read HEAD symref", e);
logger.atSevere().withCause(e).log("Cannot read HEAD symref");
return null;
}
}
@@ -2707,20 +2706,23 @@ class ReceiveCommits {
try {
projectCache.evict(project);
} catch (IOException e) {
log.warn("Cannot evict from project cache, name key: " + project.getName(), e);
logger
.atWarning()
.withCause(e)
.log("Cannot evict from project cache, name key: %s", project.getName());
}
ProjectState ps = projectCache.get(project.getNameKey());
try {
logDebug("Updating project description");
repo.setGitwebDescription(ps.getProject().getDescription());
} catch (IOException e) {
log.warn("cannot update description of " + project.getName(), e);
logger.atWarning().withCause(e).log("cannot update description of %s", project.getName());
}
if (allProjectsName.equals(project.getNameKey())) {
try {
createGroupPermissionSyncer.syncIfNeeded();
} catch (IOException | ConfigInvalidException e) {
log.error("Can't sync create group permissions", e);
logger.atSevere().withCause(e).log("Can't sync create group permissions");
}
}
}
@@ -3115,19 +3117,13 @@ class ReceiveCommits {
}
private void logDebug(String msg, Object... args) {
if (log.isDebugEnabled()) {
log.debug(receiveId + msg, args);
if (logger.atFine().isEnabled()) {
logger.atFine().logVarargs(receiveId + msg, args);
}
}
private void logWarn(String msg, Throwable t) {
if (log.isWarnEnabled()) {
if (t != null) {
log.warn(receiveId + msg, t);
} else {
log.warn(receiveId + msg);
}
}
logger.atWarning().withCause(t).log("%s%s", receiveId, msg);
}
private void logWarn(String msg) {
@@ -3135,13 +3131,7 @@ class ReceiveCommits {
}
private void logError(String msg, Throwable t) {
if (log.isErrorEnabled()) {
if (t != null) {
log.error(receiveId + msg, t);
} else {
log.error(receiveId + msg);
}
}
logger.atSevere().withCause(t).log("%s%s", receiveId, msg);
}
private void logError(String msg) {

View File

@@ -18,6 +18,7 @@ import com.google.auto.value.AutoValue;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames;
@@ -37,12 +38,10 @@ import org.eclipse.jgit.transport.AdvertiseRefsHook;
import org.eclipse.jgit.transport.BaseReceivePack;
import org.eclipse.jgit.transport.ServiceMayNotContinueException;
import org.eclipse.jgit.transport.UploadPack;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Exposes only the non refs/changes/ reference names. */
public class ReceiveCommitsAdvertiseRefsHook implements AdvertiseRefsHook {
private static final Logger log = LoggerFactory.getLogger(ReceiveCommitsAdvertiseRefsHook.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@VisibleForTesting
@AutoValue
@@ -120,7 +119,7 @@ public class ReceiveCommitsAdvertiseRefsHook implements AdvertiseRefsHook {
}
return r;
} catch (OrmException err) {
log.error("Cannot list open changes of " + projectName, err);
logger.atSevere().withCause(err).log("Cannot list open changes of %s", projectName);
return Collections.emptySet();
}
}

View File

@@ -23,6 +23,7 @@ import static org.eclipse.jgit.lib.Constants.R_HEADS;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
@@ -78,10 +79,10 @@ import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.PushCertificate;
import org.eclipse.jgit.transport.ReceiveCommand;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ReplaceOp implements BatchUpdateOp {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
ReplaceOp create(
ProjectState projectState,
@@ -97,8 +98,6 @@ public class ReplaceOp implements BatchUpdateOp {
@Nullable PushCertificate pushCertificate);
}
private static final Logger log = LoggerFactory.getLogger(ReplaceOp.class);
private static final String CHANGE_IS_CLOSED = "change is closed";
private final AccountResolver accountResolver;
@@ -486,7 +485,7 @@ public class ReplaceOp implements BatchUpdateOp {
try {
fireCommentAddedEvent(ctx);
} catch (Exception e) {
log.warn("comment-added event invocation failed", e);
logger.atWarning().withCause(e).log("comment-added event invocation failed");
}
if (mergedByPushOp != null) {
mergedByPushOp.postUpdate(ctx);
@@ -516,7 +515,10 @@ public class ReplaceOp implements BatchUpdateOp {
cm.addExtraCC(recipients.getCcOnly());
cm.send();
} catch (Exception e) {
log.error("Cannot send email for new patch set " + newPatchSet.getId(), e);
logger
.atSevere()
.withCause(e)
.log("Cannot send email for new patch set %s", newPatchSet.getId());
}
}
@@ -600,7 +602,7 @@ public class ReplaceOp implements BatchUpdateOp {
}
return null;
} catch (IOException e) {
log.warn("Can't check for already submitted change", e);
logger.atWarning().withCause(e).log("Can't check for already submitted change");
return null;
}
}

View File

@@ -23,6 +23,7 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.FooterConstants;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.PageLinks;
@@ -77,11 +78,9 @@ import org.eclipse.jgit.revwalk.FooterLine;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.util.SystemReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CommitValidators {
private static final Logger log = LoggerFactory.getLogger(CommitValidators.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final Pattern NEW_PATCHSET_PATTERN =
Pattern.compile("^" + REFS_CHANGES + "(?:[0-9][0-9]/)?([1-9][0-9]*)(?:/[1-9][0-9]*)?$");
@@ -227,7 +226,10 @@ public class CommitValidators {
messages.addAll(commitValidator.onCommitReceived(receiveEvent));
}
} catch (CommitValidationException e) {
log.debug("CommitValidationException occurred: {}", e.getFullMessage(), e);
logger
.atFine()
.withCause(e)
.log("CommitValidationException occurred: %s", e.getFullMessage());
// Keep the old messages (and their order) in case of an exception
messages.addAll(e.getMessages());
throw new CommitValidationException(e.getMessage(), messages);
@@ -443,14 +445,14 @@ public class CommitValidators {
throw new ConfigInvalidException("invalid project configuration");
}
} catch (ConfigInvalidException | IOException e) {
log.error(
"User "
+ user.getLoggableName()
+ " tried to push an invalid project configuration "
+ receiveEvent.command.getNewId().name()
+ " for project "
+ receiveEvent.project.getName(),
e);
logger
.atSevere()
.withCause(e)
.log(
"User %s tried to push an invalid project configuration %s for project %s",
user.getLoggableName(),
receiveEvent.command.getNewId().name(),
receiveEvent.project.getName());
throw new CommitValidationException("invalid project configuration", messages);
}
}
@@ -479,7 +481,7 @@ public class CommitValidators {
} catch (AuthException e) {
throw new CommitValidationException("you are not allowed to upload merges");
} catch (PermissionBackendException e) {
log.error("cannot check MERGE", e);
logger.atSevere().withCause(e).log("cannot check MERGE");
throw new CommitValidationException("internal auth error");
}
}
@@ -554,7 +556,7 @@ public class CommitValidators {
throw new CommitValidationException(
"not Signed-off-by author/committer/uploader in commit message footer");
} catch (PermissionBackendException e) {
log.error("cannot check FORGE_COMMITTER", e);
logger.atSevere().withCause(e).log("cannot check FORGE_COMMITTER");
throw new CommitValidationException("internal auth error");
}
}
@@ -590,7 +592,7 @@ public class CommitValidators {
"invalid author",
invalidEmail(receiveEvent.commit, "author", author, user, canonicalWebUrl));
} catch (PermissionBackendException e) {
log.error("cannot check FORGE_AUTHOR", e);
logger.atSevere().withCause(e).log("cannot check FORGE_AUTHOR");
throw new CommitValidationException("internal auth error");
}
}
@@ -624,7 +626,7 @@ public class CommitValidators {
"invalid committer",
invalidEmail(receiveEvent.commit, "committer", committer, user, canonicalWebUrl));
} catch (PermissionBackendException e) {
log.error("cannot check FORGE_COMMITTER", e);
logger.atSevere().withCause(e).log("cannot check FORGE_COMMITTER");
throw new CommitValidationException("internal auth error");
}
}
@@ -663,7 +665,7 @@ public class CommitValidators {
gerritIdent.getEmailAddress(),
RefPermission.FORGE_SERVER.name()));
} catch (PermissionBackendException e) {
log.error("cannot check FORGE_SERVER", e);
logger.atSevere().withCause(e).log("cannot check FORGE_SERVER");
throw new CommitValidationException("internal auth error");
}
}
@@ -690,7 +692,7 @@ public class CommitValidators {
return Collections.emptyList();
} catch (IOException e) {
String m = "error checking banned commits";
log.warn(m, e);
logger.atWarning().withCause(e).log(m);
throw new CommitValidationException(m, e);
}
}
@@ -729,7 +731,7 @@ public class CommitValidators {
return msgs;
} catch (IOException | ConfigInvalidException e) {
String m = "error validating external IDs";
log.warn(m, e);
logger.atWarning().withCause(e).log(m);
throw new CommitValidationException(m, e);
}
}
@@ -787,7 +789,7 @@ public class CommitValidators {
}
} catch (IOException e) {
String m = String.format("Validating update for account %s failed", accountId.get());
log.error(m, e);
logger.atSevere().withCause(e).log(m);
throw new CommitValidationException(m, e);
}
return Collections.emptyList();

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.git.validators;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.projects.ProjectConfigEntryType;
import com.google.gerrit.extensions.registration.DynamicMap;
import com.google.gerrit.extensions.registration.DynamicMap.Entry;
@@ -49,11 +50,9 @@ import java.util.List;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MergeValidators {
private static final Logger log = LoggerFactory.getLogger(MergeValidators.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<MergeValidationListener> mergeValidationListeners;
private final ProjectConfigValidator.Factory projectConfigValidatorFactory;
@@ -168,7 +167,7 @@ public class MergeValidators {
} catch (AuthException e) {
throw new MergeValidationException(SET_BY_ADMIN);
} catch (PermissionBackendException e) {
log.warn("Cannot check ADMINISTRATE_SERVER", e);
logger.atWarning().withCause(e).log("Cannot check ADMINISTRATE_SERVER");
throw new MergeValidationException("validation unavailable");
}
if (allUsersName.equals(destProject.getNameKey())
@@ -280,7 +279,7 @@ public class MergeValidators {
return;
}
} catch (IOException | OrmException e) {
log.error("Cannot validate account update", e);
logger.atSevere().withCause(e).log("Cannot validate account update");
throw new MergeValidationException("account validation unavailable");
}
@@ -291,7 +290,7 @@ public class MergeValidators {
"invalid account configuration: " + Joiner.on("; ").join(errorMessages));
}
} catch (IOException e) {
log.error("Cannot validate account update", e);
logger.atSevere().withCause(e).log("Cannot validate account update");
throw new MergeValidationException("account validation unavailable");
}
}

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.git.validators;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.reviewdb.client.Account;
@@ -34,12 +35,11 @@ import java.util.ArrayList;
import java.util.List;
import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.transport.ReceiveCommand;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RefOperationValidators {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final GetErrorMessages GET_ERRORS = new GetErrorMessages();
private static final Logger LOG = LoggerFactory.getLogger(RefOperationValidators.class);
public interface Factory {
RefOperationValidators create(Project project, IdentifiedUser user, ReceiveCommand cmd);
@@ -101,7 +101,7 @@ public class RefOperationValidators {
String.format(
"Ref \"%s\" %S in project %s validation failed",
event.command.getRefName(), event.command.getType(), event.project.getName());
LOG.error(header);
logger.atSevere().log(header);
throw new RefOperationValidationException(header, errors);
}

View File

@@ -18,6 +18,7 @@ import static com.google.common.collect.ImmutableSet.toImmutableSet;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
@@ -35,8 +36,6 @@ import com.google.inject.Provider;
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Runnable to schedule periodic group reindexing.
@@ -58,7 +57,7 @@ import org.slf4j.LoggerFactory;
* slave.
*/
public class PeriodicGroupIndexer implements Runnable {
private static final Logger log = LoggerFactory.getLogger(PeriodicGroupIndexer.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends LifecycleModule {
@Override
@@ -88,7 +87,7 @@ public class PeriodicGroupIndexer implements Runnable {
boolean isEnabled = cfg.getBoolean("index", "scheduledIndexer", "enabled", true);
if (!isEnabled) {
log.warn("index.scheduledIndexer is disabled");
logger.atWarning().log("index.scheduledIndexer is disabled");
return;
}
@@ -146,9 +145,9 @@ public class PeriodicGroupIndexer implements Runnable {
}
}
groupUuids = newGroupUuids;
log.info("Run group indexer, {} groups reindexed", reindexCounter);
logger.atInfo().log("Run group indexer, %s groups reindexed", reindexCounter);
} catch (Throwable t) {
log.error("Failed to reindex groups", t);
logger.atSevere().withCause(t).log("Failed to reindex groups");
}
}
}

View File

@@ -18,6 +18,7 @@ import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.reviewdb.client.AccountGroupByIdAud;
@@ -41,13 +42,11 @@ import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevSort;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.util.RawParseUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** NoteDb reader for group audit log. */
@Singleton
public class AuditLogReader {
private static final Logger log = LoggerFactory.getLogger(AuditLogReader.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final String serverId;
@@ -184,11 +183,11 @@ public class AuditLogReader {
}
private static void logInvalid(AccountGroup.UUID uuid, RevCommit c, FooterLine line) {
log.debug(
"Invalid footer line in commit {} while parsing audit log for group {}: {}",
c.name(),
uuid,
line);
logger
.atFine()
.log(
"Invalid footer line in commit %s while parsing audit log for group %s: %s",
c.name(), uuid, line);
}
private ImmutableList<ParsedCommit> parseCommits(Repository repo, AccountGroup.UUID uuid)

View File

@@ -21,6 +21,7 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.ImmutableList;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.extensions.api.config.ConsistencyCheckInfo;
@@ -46,13 +47,12 @@ import org.eclipse.jgit.notes.Note;
import org.eclipse.jgit.notes.NoteMap;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Check the referential integrity of NoteDb group storage. */
@Singleton
public class GroupsNoteDbConsistencyChecker {
private static final Logger log = LoggerFactory.getLogger(GroupsNoteDbConsistencyChecker.class);
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
/**
* The result of a consistency check. The UUID map is only non-null if no problems were detected.
*/
@@ -271,9 +271,9 @@ public class GroupsNoteDbConsistencyChecker {
public static void logConsistencyProblem(ConsistencyProblemInfo p) {
if (p.status == ConsistencyProblemInfo.Status.WARNING) {
log.warn(p.message);
logger.atWarning().log(p.message);
} else {
log.error(p.message);
logger.atSevere().log(p.message);
}
}

Some files were not shown because too many files have changed in this diff Show More