summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEryk Szymanski <eryksz@gmail.com>2020-01-10 12:14:17 +0100
committerDavid Pursehouse <dpursehouse@collab.net>2020-01-30 10:02:48 +0900
commit8bf1d9985415d2f7a5b5c5c2cd9c90d2a31902d9 (patch)
treec751635015bbcba1acd412de9bacf0092d44954a
parent927e4908e26149279ab5e3788c11245300523adc (diff)
Improve log if VersionedMetaData fails to update
In case of lock failure there is no hint on what commit has caused it. This change adds ref log message, which is "commit:" + subject line of commit message or "commit: meta data update" in case of no commit message, to the exception message. Also extract the exception message creation to a separate method, so that the same info is available when update fails for other reasons. Change-Id: I5686e079853807ba88dae6d8ccf184eb81b50013
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java24
1 files changed, 9 insertions, 15 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java
index d1e3381907..8f5e7a2bc8 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java
@@ -16,6 +16,7 @@ package com.google.gerrit.server.git;
import com.google.common.base.MoreObjects;
import java.io.BufferedReader;
+import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
@@ -389,14 +390,7 @@ public abstract class VersionedMetaData {
update.fireGitRefUpdatedEvent(ru);
return revision;
case LOCK_FAILURE:
- throw new LockFailureException(
- "Cannot update "
- + ru.getName()
- + " in "
- + db.getDirectory()
- + ": "
- + ru.getResult(),
- ru);
+ throw new LockFailureException(errorMsg(ru, db.getDirectory()), ru);
case FORCED:
case IO_FAILURE:
case NOT_ATTEMPTED:
@@ -407,15 +401,15 @@ public abstract class VersionedMetaData {
case REJECTED_MISSING_OBJECT:
case REJECTED_OTHER_REASON:
default:
- throw new IOException(
- "Cannot update "
- + ru.getName()
- + " in "
- + db.getDirectory()
- + ": "
- + ru.getResult());
+ throw new IOException(errorMsg(ru, db.getDirectory()));
}
}
+
+ private String errorMsg(RefUpdate ru, File location) {
+ return String.format(
+ "Cannot update %s in %s: %s (%s)",
+ ru.getName(), location, ru.getResult(), ru.getRefLogMessage());
+ }
};
}