Merge pull request #17430 from jellyfin/drain-stderr

Drain stderr and stdout concurrently for encoder validation
This commit is contained in:
Cody Robibero 2026-07-24 21:29:28 -04:00 committed by GitHub
commit 83e0cfd7ee
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -8,6 +8,7 @@ using System.Linq;
using System.Runtime.Versioning;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using MediaBrowser.Controller.MediaEncoding;
using Microsoft.Extensions.Logging;
@ -662,8 +663,15 @@ namespace MediaBrowser.MediaEncoding.Encoder
writer.Write(testKey);
}
using var reader = readStdErr ? process.StandardError : process.StandardOutput;
return reader.ReadToEnd();
// Drain both streams concurrently to prevent pipe hanging, see #17429
using var standardOutput = process.StandardOutput;
using var standardError = process.StandardError;
var standardOutputTask = standardOutput.ReadToEndAsync();
var standardErrorTask = standardError.ReadToEndAsync();
process.WaitForExit();
Task.WaitAll(standardOutputTask, standardErrorTask);
return (readStdErr ? standardErrorTask : standardOutputTask).GetAwaiter().GetResult();
}
}