From cd5d0f99850e89c210395dedd5450ba8247a19e8 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Wed, 5 May 2010 12:16:43 -0700 Subject: [PATCH] upload-pack: Delay reserving database connection until executing We don't want to check out a connection from the connection pool until we know we have been granted a thread from the thread pool to execute on. If we grab the connection when the Upload object is created, and we have to wait 5 seconds to get a thread for runImpl() to execute on, we'll simply be tieing up that connection for the entire duration of the wait. So use a Provider instead so we can defer obtaining the connection. Change-Id: I9ac360981fb1ad3e09e77ad579e9203686b14494 Signed-off-by: Shawn O. Pearce Reviewed-by: Nico Sallembien --- .../main/java/com/google/gerrit/sshd/commands/Upload.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/Upload.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/Upload.java index fc67265db5..35ce899c72 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/Upload.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/Upload.java @@ -18,6 +18,7 @@ import com.google.gerrit.reviewdb.ReviewDb; import com.google.gerrit.server.git.VisibleRefFilter; import com.google.gerrit.sshd.AbstractGitCommand; import com.google.inject.Inject; +import com.google.inject.Provider; import org.eclipse.jgit.transport.UploadPack; @@ -25,15 +26,14 @@ import java.io.IOException; /** Publishes Git repositories over SSH using the Git upload-pack protocol. */ final class Upload extends AbstractGitCommand { - @Inject - private ReviewDb db; + private Provider db; @Override protected void runImpl() throws IOException { final UploadPack up = new UploadPack(repo); if (!projectControl.allRefsAreVisible()) { - up.setRefFilter(new VisibleRefFilter(repo, projectControl, db)); + up.setRefFilter(new VisibleRefFilter(repo, projectControl, db.get())); } up.upload(in, out, err); }