diff options
Diffstat (limited to 'java/com/google/gerrit/server/query/change/ConflictsPredicate.java')
-rw-r--r-- | java/com/google/gerrit/server/query/change/ConflictsPredicate.java | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/java/com/google/gerrit/server/query/change/ConflictsPredicate.java b/java/com/google/gerrit/server/query/change/ConflictsPredicate.java index 7dc7a0b080..20c43af9ac 100644 --- a/java/com/google/gerrit/server/query/change/ConflictsPredicate.java +++ b/java/com/google/gerrit/server/query/change/ConflictsPredicate.java @@ -14,6 +14,9 @@ package com.google.gerrit.server.query.change; +import static java.util.concurrent.TimeUnit.MINUTES; + +import com.google.common.flogger.FluentLogger; import com.google.gerrit.common.data.SubmitTypeRecord; import com.google.gerrit.index.query.PostFilterPredicate; import com.google.gerrit.index.query.Predicate; @@ -41,6 +44,8 @@ import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; public class ConflictsPredicate { + private static final FluentLogger logger = FluentLogger.forEnclosingClass(); + // UI code may depend on this string, so use caution when changing. protected static final String TOO_MANY_FILES = "too many files to find conflicts"; @@ -54,7 +59,12 @@ public class ConflictsPredicate { cd = args.changeDataFactory.create(args.db.get(), c); files = cd.currentFilePaths(); } catch (IOException e) { - throw new OrmException(e); + warnWithOccasionalStackTrace( + e, + "Error constructing conflicts predicates for change %s in %s", + c.getId(), + c.getProject()); + return ChangeIndexPredicate.none(); } if (3 + files.size() > args.indexConfig.maxTerms()) { @@ -201,4 +211,13 @@ public class ConflictsPredicate { return alreadyAccepted; } } + + private static void warnWithOccasionalStackTrace(Throwable cause, String format, Object... args) { + logger.atWarning().logVarargs(format, args); + logger + .atWarning() + .withCause(cause) + .atMostEvery(1, MINUTES) + .logVarargs("(Re-logging with stack trace) " + format, args); + } } |