From da523e81481c231df53a69427cf92ac63f68a729 Mon Sep 17 00:00:00 2001 From: jahsu <45610531+jahsu-MSFT@users.noreply.github.com> Date: Tue, 23 Jul 2019 17:47:19 -0700 Subject: [PATCH] Use ArtifactHttpClientFactory to generate dedupStoreClient that includes ArtifactHttpRetryHandler (#2357) * update clinet * remove test code * update to 50 secs --- .../DedupManifestArtifactClientFactory.cs | 25 +++++++++---------- .../PipelineArtifactPluginV1.cs | 2 +- .../PipelineArtifactServer.cs | 5 ++-- .../PipelineCache/PipelineCacheServer.cs | 4 +-- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Agent.Plugins/PipelineArtifact/DedupManifestArtifactClientFactory.cs b/src/Agent.Plugins/PipelineArtifact/DedupManifestArtifactClientFactory.cs index a7ac03cc9b..3f273ac08d 100644 --- a/src/Agent.Plugins/PipelineArtifact/DedupManifestArtifactClientFactory.cs +++ b/src/Agent.Plugins/PipelineArtifact/DedupManifestArtifactClientFactory.cs @@ -1,31 +1,30 @@ using System; -using System.Collections.Generic; using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Threading.Tasks; using System.Threading; using Agent.Sdk; -using Microsoft.TeamFoundation.Build.WebApi; -using Microsoft.TeamFoundation.DistributedTask.WebApi; -using Microsoft.VisualStudio.Services.Agent.Util; -using Microsoft.VisualStudio.Services.BlobStore.Common; using Microsoft.VisualStudio.Services.BlobStore.Common.Telemetry; using Microsoft.VisualStudio.Services.BlobStore.WebApi; -using Microsoft.VisualStudio.Services.Common; using Microsoft.VisualStudio.Services.Content.Common.Tracing; using Microsoft.VisualStudio.Services.WebApi; -using Newtonsoft.Json; +using Microsoft.VisualStudio.Services.Content.Common; +using Microsoft.VisualStudio.Services.Common; namespace Agent.Plugins.PipelineArtifact { public static class DedupManifestArtifactClientFactory { - public static DedupManifestArtifactClient CreateDedupManifestClient(AgentTaskPluginExecutionContext context, VssConnection connection, out BlobStoreClientTelemetry telemetry) + public static DedupManifestArtifactClient CreateDedupManifestClient(AgentTaskPluginExecutionContext context, VssConnection connection, CancellationToken cancellationToken, out BlobStoreClientTelemetry telemetry) { - var dedupStoreHttpClient = connection.GetClient<DedupStoreHttpClient>(); var tracer = new CallbackAppTraceSource(str => context.Output(str), SourceLevels.Information); - dedupStoreHttpClient.SetTracer(tracer); + + ArtifactHttpClientFactory factory = new ArtifactHttpClientFactory( + connection.Credentials, + TimeSpan.FromSeconds(50), + tracer, + cancellationToken); + + var dedupStoreHttpClient = factory.CreateVssHttpClient<IDedupStoreHttpClient, DedupStoreHttpClient>(connection.GetClient<DedupStoreHttpClient>().BaseAddress); + var client = new DedupStoreClientWithDataport(dedupStoreHttpClient, PipelineArtifactProvider.GetDedupStoreClientMaxParallelism(context)); return new DedupManifestArtifactClient(telemetry = new BlobStoreClientTelemetry(tracer, dedupStoreHttpClient.BaseAddress), client, tracer); } diff --git a/src/Agent.Plugins/PipelineArtifact/PipelineArtifactPluginV1.cs b/src/Agent.Plugins/PipelineArtifact/PipelineArtifactPluginV1.cs index d11b250ff7..af144bc10a 100644 --- a/src/Agent.Plugins/PipelineArtifact/PipelineArtifactPluginV1.cs +++ b/src/Agent.Plugins/PipelineArtifact/PipelineArtifactPluginV1.cs @@ -60,7 +60,7 @@ public class PublishPipelineArtifactTaskV1 : PipelineArtifactTaskPluginBaseV1 protected override async Task ProcessCommandInternalAsync( AgentTaskPluginExecutionContext context, CancellationToken token) - { + { string artifactName = context.GetInput(ArtifactEventProperties.ArtifactName, required: false); string targetPath = context.GetInput(TargetPath, required: true); string defaultWorkingDirectory = context.Variables.GetValueOrDefault("system.defaultworkingdirectory").Value; diff --git a/src/Agent.Plugins/PipelineArtifact/PipelineArtifactServer.cs b/src/Agent.Plugins/PipelineArtifact/PipelineArtifactServer.cs index b4997d4173..be367d4a6e 100644 --- a/src/Agent.Plugins/PipelineArtifact/PipelineArtifactServer.cs +++ b/src/Agent.Plugins/PipelineArtifact/PipelineArtifactServer.cs @@ -29,13 +29,14 @@ internal async Task UploadAsync( { VssConnection connection = context.VssConnection; BlobStoreClientTelemetry clientTelemetry; - DedupManifestArtifactClient dedupManifestClient = DedupManifestArtifactClientFactory.CreateDedupManifestClient(context, connection, out clientTelemetry); + DedupManifestArtifactClient dedupManifestClient = DedupManifestArtifactClientFactory.CreateDedupManifestClient(context, connection, cancellationToken, out clientTelemetry); using (clientTelemetry) { //Upload the pipeline artifact. PipelineArtifactActionRecord uploadRecord = clientTelemetry.CreateRecord<PipelineArtifactActionRecord>((level, uri, type) => new PipelineArtifactActionRecord(level, uri, type, nameof(UploadAsync), context)); + PublishResult result = await clientTelemetry.MeasureActionAsync( record: uploadRecord, actionAsync: async () => @@ -88,7 +89,7 @@ internal async Task DownloadAsync( { VssConnection connection = context.VssConnection; BlobStoreClientTelemetry clientTelemetry; - DedupManifestArtifactClient dedupManifestClient = DedupManifestArtifactClientFactory.CreateDedupManifestClient(context, connection, out clientTelemetry); + DedupManifestArtifactClient dedupManifestClient = DedupManifestArtifactClientFactory.CreateDedupManifestClient(context, connection, cancellationToken, out clientTelemetry); BuildServer buildHelper = new BuildServer(connection); using (clientTelemetry) diff --git a/src/Agent.Plugins/PipelineCache/PipelineCacheServer.cs b/src/Agent.Plugins/PipelineCache/PipelineCacheServer.cs index ab6568bd34..2c18a8e26b 100644 --- a/src/Agent.Plugins/PipelineCache/PipelineCacheServer.cs +++ b/src/Agent.Plugins/PipelineCache/PipelineCacheServer.cs @@ -34,7 +34,7 @@ internal async Task UploadAsync( { VssConnection connection = context.VssConnection; BlobStoreClientTelemetry clientTelemetry; - DedupManifestArtifactClient dedupManifestClient = DedupManifestArtifactClientFactory.CreateDedupManifestClient(context, connection, out clientTelemetry); + DedupManifestArtifactClient dedupManifestClient = DedupManifestArtifactClientFactory.CreateDedupManifestClient(context, connection, cancellationToken, out clientTelemetry); PipelineCacheClient pipelineCacheClient = this.CreateClient(clientTelemetry, context, connection); using (clientTelemetry) @@ -98,7 +98,7 @@ internal async Task DownloadAsync( { VssConnection connection = context.VssConnection; BlobStoreClientTelemetry clientTelemetry; - DedupManifestArtifactClient dedupManifestClient = DedupManifestArtifactClientFactory.CreateDedupManifestClient(context, connection, out clientTelemetry); + DedupManifestArtifactClient dedupManifestClient = DedupManifestArtifactClientFactory.CreateDedupManifestClient(context, connection, cancellationToken, out clientTelemetry); PipelineCacheClient pipelineCacheClient = this.CreateClient(clientTelemetry, context, connection); GetPipelineCacheArtifactOptions options = new GetPipelineCacheArtifactOptions {