From f07f0e6f4efc6961993353819d05a77d558b5594 Mon Sep 17 00:00:00 2001 From: Shawn Pearce Date: Thu, 16 Oct 2014 15:25:08 -0700 Subject: [PATCH] Lazily load the changes byKey map in autoCloseChanges When a large number of commits are merged in from an upstream Git repository that does not use Gerrit there may be no Change-Id lines found in the revision range being traversed. Avoid scanning the database to query out open changes until at least one commit is found that has a Change-Id footer. Change-Id: I91d2647691daef9755ade2bfbf0d3c25eefd02db --- .../java/com/google/gerrit/server/git/ReceiveCommits.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java index 2b3cc5794e..7606da55f9 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java @@ -2386,7 +2386,7 @@ public class ReceiveCommits { } final SetMultimap byCommit = changeRefsById(); - final Map byKey = openChangesByKey(branch); + Map byKey = null; final List toClose = new ArrayList<>(); for (RevCommit c; (c = rw.next()) != null;) { rw.parseBody(c); @@ -2401,6 +2401,10 @@ public class ReceiveCommits { } for (final String changeId : c.getFooterLines(CHANGE_ID)) { + if (byKey == null) { + byKey = openChangesByKey(branch); + } + final Change.Id onto = byKey.get(new Change.Key(changeId.trim())); if (onto != null) { final ReplaceRequest req = new ReplaceRequest(onto, c, cmd, false);