diff --git a/eng/publishing/v3/publish-assets.yml b/eng/publishing/v3/publish-assets.yml
index bdb0fe9e462..589ce5c5a1e 100644
--- a/eng/publishing/v3/publish-assets.yml
+++ b/eng/publishing/v3/publish-assets.yml
@@ -102,6 +102,8 @@ jobs:
/p:AzureDevOpsOrg='$(AzDOAccount)'
/p:AzureProject='$(AzDOProjectName)'
/p:UseStreamingPublishing='true'
+ /p:StreamingPublishingMaxClients=16
+ /p:NonStreamingPublishingMaxClients=12
- template: /eng/common/templates/steps/publish-logs.yml
parameters:
StageLabel: '${{ parameters.stageName }}'
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishArtifactsInManifest.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishArtifactsInManifest.proj
index fa4778f6aea..6aea96bc2a2 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishArtifactsInManifest.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishArtifactsInManifest.proj
@@ -109,6 +109,8 @@
false
false
$(BlobBasePath)
+ 12
+ 16
-
+ UseStreamingPublishing="$(UseStreamingPublishing)"
+ StreamingPublishingMaxClients="$(StreamingPublishingMaxClients)"
+ NonStreamingPublishingMaxClients="$(NonStreamingPublishingMaxClients)"/>
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifest.cs b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifest.cs
index 0cdbd667c59..753ed3262cf 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifest.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifest.cs
@@ -196,6 +196,10 @@ public string BuildQuality
///
public bool UseStreamingPublishing { get; set; } = false;
+ public int StreamingPublishingMaxClients {get; set;}
+
+ public int NonStreamingPublishingMaxClients {get; set;}
+
///
/// Just an internal flag to keep track whether we published assets via a V3 manifest or not.
///
@@ -389,7 +393,9 @@ internal PublishArtifactsInManifestBase ConstructPublishingV3Task(BuildModel bui
BuildId = this.BuildId,
AzureProject = this.AzureProject,
AzureDevOpsOrg = this.AzureDevOpsOrg,
- UseStreamingPublishing = this.UseStreamingPublishing
+ UseStreamingPublishing = this.UseStreamingPublishing,
+ StreamingPublishingMaxClients = this.StreamingPublishingMaxClients,
+ NonStreamingPublishingMaxClients = this.NonStreamingPublishingMaxClients
};
}
}
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifestBase.cs b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifestBase.cs
index c336a196ed9..ddbbadb383a 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifestBase.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifestBase.cs
@@ -69,9 +69,13 @@ public abstract class PublishArtifactsInManifestBase : Microsoft.Build.Utilities
///
[Required]
public string NugetPath { get; set; }
-
- private const int StreamingPublishingMaxClients = 16;
- private const int NonStreamingPublishingMaxClients = 12;
+
+ ///
+ /// We are setting StreamingPublishingMaxClients=16 and NonStreamingPublishingMaxClients=12 through publish-asset.yml as we were hitting OOM issue
+ /// https://github.com/dotnet/core-eng/issues/13098 for more details.
+ ///
+ public int StreamingPublishingMaxClients {get; set;}
+ public int NonStreamingPublishingMaxClients {get; set;}
///
/// Maximum number of parallel uploads for the upload tasks.