changeset 863:11af75f9dc98

Add ability to run hg pull with --profile option to troubleshoot slow agent-side checkout
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Tue, 26 Aug 2014 22:01:22 +0200
parents 24a6ef9166ae
children 98657a5c5cb1
files mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfig.java mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfigImpl.java mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/PullCommand.java
diffstat 4 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfig.java	Mon Aug 25 19:22:39 2014 +0200
+++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfig.java	Tue Aug 26 22:01:22 2014 +0200
@@ -34,6 +34,8 @@
 
   boolean runWithTraceback(@NotNull AgentRunningBuild build);
 
+  boolean runWithProfile(@NotNull  AgentRunningBuild build);
+
   @NotNull
   File getTempDir();
 }
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfigImpl.java	Mon Aug 25 19:22:39 2014 +0200
+++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentPluginConfigImpl.java	Tue Aug 26 22:01:22 2014 +0200
@@ -68,6 +68,10 @@
     return Boolean.valueOf(build.getSharedConfigParameters().get("teamcity.hg.run.commands.with.traceback"));
   }
 
+  public boolean runWithProfile(@NotNull AgentRunningBuild build) {
+    return Boolean.valueOf(build.getSharedConfigParameters().get("teamcity.hg.runCommandsWithProfile"));
+  }
+
   @Nullable
   public Integer parseTimeout(@Nullable String timeoutStr) {
     if (timeoutStr == null)
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java	Mon Aug 25 19:22:39 2014 +0200
+++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialIncludeRuleUpdater.java	Tue Aug 26 22:01:22 2014 +0200
@@ -54,6 +54,7 @@
   private final boolean myUseLocalMirrors;
   private int myPullTimeout;
   private final boolean myUseTraceback;
+  private final boolean myProfile;
   private final List<MercurialExtension> myExtensions = new ArrayList<MercurialExtension>();
 
   public MercurialIncludeRuleUpdater(@NotNull AgentPluginConfig pluginConfig,
@@ -71,6 +72,7 @@
     myUseLocalMirrors = pluginConfig.isUseLocalMirrors(build);
     myPullTimeout = pluginConfig.getPullTimeout(build);
     myUseTraceback = pluginConfig.runWithTraceback(build);
+    myProfile = pluginConfig.runWithProfile(build);
   }
 
 
@@ -128,6 +130,7 @@
         myLogger.message("Start pulling changes from " + myAuthSettings.getRepositoryUrlWithHiddenPassword(repositoryUrl));
         mirrorRepo.pull().fromRepository(repositoryUrl)
                 .withTraceback(myUseTraceback)
+                .withProfile(myProfile)
                 .withTimeout(myPullTimeout)
                 .call();
         myLogger.message("Local mirror changes successfully pulled");
@@ -162,6 +165,7 @@
         try {
           repo.pull().fromRepository(repositoryUrl)
                   .withTraceback(myUseTraceback)
+                  .withProfile(myProfile)
                   .withTimeout(myPullTimeout)
                   .call();
         } catch (UnrelatedRepositoryException e) {
@@ -249,6 +253,7 @@
         myLogger.message("Pull from local mirror");
         subrepository.pull().fromRepository(mirrorDir)
                 .withTraceback(myUseTraceback)
+                .withProfile(myProfile)
                 .withTimeout(myPullTimeout)
                 .call();
         myLogger.message("done");
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/PullCommand.java	Mon Aug 25 19:22:39 2014 +0200
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/PullCommand.java	Tue Aug 26 22:01:22 2014 +0200
@@ -32,6 +32,7 @@
   private String myPullUrl;
   private int myTimeout;
   private boolean myTraceback;
+  private boolean myProfile;
   private ProgressParser.ProgressConsumer myProgressConsumer;
 
   public PullCommand(@NotNull CommandSettings commandSettings,
@@ -61,6 +62,11 @@
     return this;
   }
 
+  public PullCommand withProfile(boolean runWithProfile) {
+    myProfile = runWithProfile;
+    return this;
+  }
+
   public PullCommand withProgressConsumer(ProgressParser.ProgressConsumer progressConsumer) {
     myProgressConsumer = progressConsumer;
     return this;
@@ -73,6 +79,9 @@
     if (myTraceback)
       cli.addParameter("--traceback");
 
+    if (myProfile)
+      cli.addParameter("--profile");
+
     CommandSettings settings = myCommandSettings.setTimeout(myTimeout);
     if (myProgressConsumer != null) {
       cli.addParameters("--config", "extensions.progress=");