summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdwin Kempin <ekempin@google.com>2023-11-03 11:06:52 +0000
committerNasser Grainawi <nasser.grainawi@linaro.org>2023-11-08 18:46:29 +0000
commit94bc9aee9ffb39e52546ffd712b50f4aee246952 (patch)
treee6522ffa26e8fd4b993c6c5aa3aee5dd86cc3dcd
parentad29debbac3d6a68a730f0316a4d97bd6131b8f2 (diff)
ChangeJson: Log caller when current revision is unexpectedly null
This may help us understand the conditions under which this issue happens. Release-Notes: skip Change-Id: Ib55aedca384dda555297fe83b14783b85e464484 Signed-off-by: Edwin Kempin <ekempin@google.com> (cherry picked from commit 3600dcf6a96bdd18f612d6f8c955647ade70c2ad)
-rw-r--r--java/com/google/gerrit/server/change/ChangeJson.java7
1 files changed, 5 insertions, 2 deletions
diff --git a/java/com/google/gerrit/server/change/ChangeJson.java b/java/com/google/gerrit/server/change/ChangeJson.java
index 7c61e5878b..19064b0fa1 100644
--- a/java/com/google/gerrit/server/change/ChangeJson.java
+++ b/java/com/google/gerrit/server/change/ChangeJson.java
@@ -106,6 +106,7 @@ import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.TrackingFooters;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.index.change.ChangeField;
+import com.google.gerrit.server.logging.CallerFinder;
import com.google.gerrit.server.notedb.ChangeNotes;
import com.google.gerrit.server.notedb.ReviewerStateInternal;
import com.google.gerrit.server.patch.PatchListNotAvailableException;
@@ -758,6 +759,7 @@ public class ChangeJson {
// This block must come after the ChangeInfo is mostly populated, since
// it will be passed to ActionVisitors as-is.
+
if (needRevisions) {
out.revisions = revisionJson.getRevisions(accountLoader, cd, src, limitToPsId, out);
for (Map.Entry<String, RevisionInfo> entry : out.revisions.entrySet()) {
@@ -770,13 +772,14 @@ public class ChangeJson {
logger.atSevere().log(
"current revision for change %s not found"
+ " (current patch set ID = %s, patch sets = %s, meta revision = %s,"
- + " options = %s)",
+ + " options = %s, caller = %s)",
cd.getId(),
cd.change().currentPatchSetId(),
src.entrySet().stream()
.collect(toImmutableMap(Map.Entry::getKey, e -> e.getValue().commitId().name())),
getMetaRevisionIfAvailable(cd).map(ObjectId::name).orElse("n/a"),
- options);
+ options,
+ CallerFinder.builder().addTarget(ChangeJson.class).build().findCallerLazy());
PatchSet.Id currentPatchSetFromChangeData =
Optional.ofNullable(cd.currentPatchSet()).map(PatchSet::id).orElse(null);
if (!cd.change().currentPatchSetId().equals(currentPatchSetFromChangeData)) {