mirror of
https://github.com/GoodOlClint/PSProxmoxVE.git
synced 2026-07-26 07:58:14 +00:00
fix: add -TimeoutSeconds for long-running HTTP calls
PveHttpClient was constructed without setting HttpClient.Timeout, so .NET's 100s default applied to every request. Multi-GB ISO uploads via Send-PveFile on a real LAN reliably tripped this with TaskCanceledException after 100 seconds, and there was no way to override it. - PveSession gains a Timeout (TimeSpan) property, defaulting to 100s. - PveHttpClient accepts an optional per-instance timeout override that takes precedence over the session timeout. - Connect-PveServer exposes -TimeoutSeconds to set the session default. - Send-PveFile and Invoke-PveStorageDownload expose -TimeoutSeconds with a 30-minute implicit default so large uploads/downloads do not trip the 100s default. -TimeoutSeconds 0 means Timeout.InfiniteTimeSpan. Tracked as F087. Closes #59. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2815,6 +2815,41 @@
|
||||
"evidence": "Replaced JArray? Nodelist with List<Dictionary<string, object?>>? + NativeListConverter, and JObject? Totem with Dictionary<string, object?>? + NativeDictionaryConverter. Removed Newtonsoft.Json.Linq dependency.",
|
||||
"verified_by": "dotnet build + dotnet test (382 passed)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "F087",
|
||||
"title": "HttpClient uses 100s default timeout; Send-PveFile and other long-running calls fail on large payloads",
|
||||
"category": "reliability",
|
||||
"severity": "high",
|
||||
"status": "resolved",
|
||||
"first_detected": "2026-05-20",
|
||||
"github_issue": 59,
|
||||
"files": [
|
||||
"src/PSProxmoxVE.Core/Client/PveHttpClient.cs",
|
||||
"src/PSProxmoxVE.Core/Authentication/PveSession.cs",
|
||||
"src/PSProxmoxVE.Core/Authentication/PveAuthenticator.cs",
|
||||
"src/PSProxmoxVE/Cmdlets/Storage/SendPveFileCmdlet.cs",
|
||||
"src/PSProxmoxVE/Cmdlets/Storage/InvokePveStorageDownloadCmdlet.cs",
|
||||
"src/PSProxmoxVE/Cmdlets/Connection/ConnectPveServerCmdlet.cs"
|
||||
],
|
||||
"description": "PveHttpClient constructs HttpClient without setting Timeout, so .NET's 100s default applies to every request. Send-PveFile, Invoke-PveStorageDownload, and Connect-PveServer expose no way to override it, so multi-GB ISO uploads on a real LAN reliably trip the 100s timeout with TaskCanceledException.",
|
||||
"scan_history": [
|
||||
{
|
||||
"scan_date": "2026-05-20",
|
||||
"local_id": null,
|
||||
"status": "new"
|
||||
},
|
||||
{
|
||||
"scan_date": "2026-05-20",
|
||||
"local_id": null,
|
||||
"status": "fixed"
|
||||
}
|
||||
],
|
||||
"resolution": {
|
||||
"scan_date": "2026-05-20",
|
||||
"evidence": "Added PveSession.Timeout (default 100s) and a TimeSpan? override on PveHttpClient. Connect-PveServer exposes -TimeoutSeconds to set the session-default; Send-PveFile and Invoke-PveStorageDownload expose -TimeoutSeconds with a 30-minute implicit default so large uploads/downloads do not trip the 100s HttpClient default. -TimeoutSeconds 0 means Timeout.InfiniteTimeSpan.",
|
||||
"verified_by": "dotnet build + dotnet test (550 passed, 5 new timeout tests)"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user