fix(launcher): guard orphan bake publication
This commit is contained in:
parent
3f68895120
commit
208a70ac83
14 changed files with 829 additions and 55 deletions
|
|
@ -16,6 +16,21 @@ public static class BakeOutputTransaction
|
|||
Func<string, TResult> writeTemporary,
|
||||
Action<string, TResult> validateTemporary,
|
||||
CancellationToken cancellationToken = default)
|
||||
=> WriteValidateAndPublish(
|
||||
destinationPath,
|
||||
writeTemporary,
|
||||
validateTemporary,
|
||||
beforePublicationLock: null,
|
||||
beforePromotion: null,
|
||||
cancellationToken);
|
||||
|
||||
internal static TResult WriteValidateAndPublish<TResult>(
|
||||
string destinationPath,
|
||||
Func<string, TResult> writeTemporary,
|
||||
Action<string, TResult> validateTemporary,
|
||||
Action? beforePublicationLock,
|
||||
Action? beforePromotion,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
ArgumentException.ThrowIfNullOrWhiteSpace(destinationPath);
|
||||
ArgumentNullException.ThrowIfNull(writeTemporary);
|
||||
|
|
@ -36,6 +51,14 @@ public static class BakeOutputTransaction
|
|||
cancellationToken.ThrowIfCancellationRequested();
|
||||
validateTemporary(temporaryPath, result);
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
beforePublicationLock?.Invoke();
|
||||
using IDisposable? publication =
|
||||
BakePublicationGuard.AcquireIfRequested(
|
||||
fullDestination,
|
||||
cancellationToken);
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
beforePromotion?.Invoke();
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
|
||||
// Same-volume MoveFileEx/rename is the publication primitive.
|
||||
// File.Replace additionally performs destination metadata/backup
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue