Skip to content

Commit 3343348

Browse files
committed
Use long-but-reasonable max timeout instead of infinite
1 parent b98da34 commit 3343348

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/Containers/Microsoft.NET.Build.Containers/Registry/DefaultRegistryAPI.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ internal class DefaultRegistryAPI : IRegistryAPI
1414
private readonly HttpClient _client;
1515
private readonly ILogger _logger;
1616

17+
// Empirical value - Unoptimized .NET application layers can be ~200MB
18+
// * .NET Runtime (~80MB)
19+
// * ASP.NET Runtime (~25MB)
20+
// * application and dependencies - variable, but _probably_ not more than the BCL?
21+
// Given a 200MB target and a 1Mb/s upload speed, we'd expect an upload speed of 27m:57s.
22+
// Making this a round 30 for convenience.
23+
private static TimeSpan LongRequestTimeout = TimeSpan.FromMinutes(30);
24+
1725
internal DefaultRegistryAPI(string registryName, Uri baseUri, ILogger logger)
1826
{
1927
bool isAmazonECRRegistry = baseUri.IsAmazonECRRegistry();
@@ -33,7 +41,7 @@ private static HttpClient CreateClient(string registryName, Uri baseUri, ILogger
3341
var innerHandler = new SocketsHttpHandler()
3442
{
3543
UseCookies = false,
36-
// the rest of the HTTP stack has an infinite timeout (see below) but we should still have a reasonable timeout for the initial connection
44+
// the rest of the HTTP stack has an very long timeout (see below) but we should still have a reasonable timeout for the initial connection
3745
ConnectTimeout = TimeSpan.FromSeconds(30)
3846
};
3947

@@ -56,8 +64,7 @@ private static HttpClient CreateClient(string registryName, Uri baseUri, ILogger
5664

5765
HttpClient client = new(clientHandler)
5866
{
59-
// blob upload operations can take quite a while, we should allow them to take as long as they need
60-
Timeout = Timeout.InfiniteTimeSpan
67+
Timeout = LongRequestTimeout
6168
};
6269

6370
client.DefaultRequestHeaders.Add("User-Agent", $".NET Container Library v{Constants.Version}");

0 commit comments

Comments
 (0)