From 61a41973e21a0f707893bb33433fe0402d3292f2 Mon Sep 17 00:00:00 2001 From: Gustaf Lundh Date: Tue, 26 Nov 2013 10:05:25 +0100 Subject: [PATCH 1/4] Add 'reindex' to the pgm help output. Change-Id: I237c738dbbc6baf3e73c2de408e04bf2ea982e79 --- .../src/main/java/com/google/gerrit/launcher/GerritLauncher.java | 1 + 1 file changed, 1 insertion(+) diff --git a/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java b/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java index 2dd20a2e22..ead7dc727f 100644 --- a/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java +++ b/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java @@ -67,6 +67,7 @@ public final class GerritLauncher { System.err.println(); System.err.println("The most commonly used commands are:"); System.err.println(" init Initialize a Gerrit installation"); + System.err.println(" reindex Rebuild the secondary index"); System.err.println(" daemon Run the Gerrit network daemons"); System.err.println(" gsql Run the interactive query console"); System.err.println(" version Display the build version number"); From a4a53664446b5f6a466b386773d89ff992093617 Mon Sep 17 00:00:00 2001 From: Gustaf Lundh Date: Tue, 19 Nov 2013 17:21:28 +0100 Subject: [PATCH 2/4] Performance Fix: Minimize number of advertisedHaves While we set up hooks in ReceiveCommits to minimize the number of advertised refs (for instance filtering out refs/changes and refs/cache-automerge refs), their objectIds will still be added to BaseReceivePack.advertisedHaves (JGit), leading to an unnecessarily complex commit graph for JGit to traverse when checking for commit connectivity in BaseReceivePack.checkConnectivity(). By filtering the refs before the objectIds are added to advertisedHaves, lots of time can be saved when pushing to complex Gits. Push times for one of our Gits (warm caches): Before fix: real 0m42.926s After fix: real 0m6.325s This Git has around 90k change/ps refs. Change-Id: I2f0a0830bd733f908f0aeaf1eaf0412dae428a16 --- .../google/gerrit/server/git/ReceiveCommits.java | 16 +++++++++++++++- 1 file changed, 15 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 bcc30144fc..897b53a81c 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 @@ -18,7 +18,6 @@ import static com.google.gerrit.reviewdb.client.Change.INITIAL_PATCH_SET_ID; import static com.google.gerrit.server.git.MultiProgressMonitor.UNKNOWN; import static com.google.gerrit.server.mail.MailUtil.getRecipientsFromApprovals; import static com.google.gerrit.server.mail.MailUtil.getRecipientsFromFooters; - import static org.eclipse.jgit.lib.Constants.R_HEADS; import static org.eclipse.jgit.transport.ReceiveCommand.Result.NOT_ATTEMPTED; import static org.eclipse.jgit.transport.ReceiveCommand.Result.OK; @@ -114,6 +113,7 @@ import org.eclipse.jgit.transport.AdvertiseRefsHook; import org.eclipse.jgit.transport.AdvertiseRefsHookChain; import org.eclipse.jgit.transport.BaseReceivePack; import org.eclipse.jgit.transport.ReceiveCommand; +import org.eclipse.jgit.transport.RefFilter; import org.eclipse.jgit.transport.ReceiveCommand.Result; import org.eclipse.jgit.transport.ReceivePack; import org.eclipse.jgit.transport.UploadPack; @@ -363,6 +363,20 @@ public class ReceiveCommits { rp.setAllowDeletes(true); rp.setAllowNonFastForwards(true); rp.setCheckReceivedObjects(true); + rp.setRefFilter(new RefFilter() { + @Override + public Map filter(Map refs) { + Map filteredRefs = Maps.newHashMapWithExpectedSize(refs.size()); + for (Map.Entry e : refs.entrySet()) { + String name = e.getKey(); + if (!name.startsWith("refs/changes/") + && !name.startsWith(GitRepositoryManager.REFS_CACHE_AUTOMERGE)) { + filteredRefs.put(name, e.getValue()); + } + } + return filteredRefs; + } + }); if (!projectControl.allRefsAreVisible()) { rp.setCheckReferencedObjectsAreReachable(config.checkReferencedObjectsAreReachable); From 43dbe3d317f32015e1765b8079acc45e27259580 Mon Sep 17 00:00:00 2001 From: Matt Baker Date: Tue, 26 Nov 2013 20:30:01 -0700 Subject: [PATCH 3/4] Fixed the spelling of indefinitely. Change-Id: I25d0df07d412508d22083e4c42761a942d367ddc --- .../src/main/java/com/google/gerrit/reviewdb/client/Change.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java index 76a38b9e8e..8adba9497d 100644 --- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java +++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java @@ -236,7 +236,7 @@ public final class Change { * period while the merge queue fires and the destination branch is updated. * However, if a dependency commit (a {@link PatchSetAncestor}, directly or * transitively) is not yet merged into the branch, the change will hang in - * the SUBMITTED state indefinately. + * the SUBMITTED state indefinitely. * *

* Changes in the SUBMITTED state can be moved to: From 3a40c6d7063e6309f2d948ed6044e97a7b6febb7 Mon Sep 17 00:00:00 2001 From: Matt Baker Date: Tue, 26 Nov 2013 21:01:17 -0700 Subject: [PATCH 4/4] Fixed the spelling of together and very minor rewording Change-Id: Ib4bb64d39638e81f5db222d404fa99d7b2c2e51d --- Documentation/access-control.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/access-control.txt b/Documentation/access-control.txt index 189316cc56..e8d5c15dea 100644 --- a/Documentation/access-control.txt +++ b/Documentation/access-control.txt @@ -346,9 +346,9 @@ You can also find these static references linked on the page of each change. refs/meta/config ^^^^^^^^^^^^^^^^ -This is where the Gerrit configuration of each project is residing. This +This is where the Gerrit configuration of each project resides. This branch contains several files of importance: +project.config+, +groups+ and -+rules.pl+. Torgether they control access and behavior during the change ++rules.pl+. Together they control access and behavior during the change review process.