diff --git a/src/publisher/Publisher.cs b/src/publisher/Publisher.cs index 5883331d..432e9468 100644 --- a/src/publisher/Publisher.cs +++ b/src/publisher/Publisher.cs @@ -98,6 +98,13 @@ await predecessors.IterTaskParallel(async predecessor => await processResource(p async ValueTask processDelete() { + // Skip if not actually being deleted this run (e.g. WorkspaceResource has no artifact file). + // Cascading to successors here would deadlock with their processPut tasks. + if (resourceSet.Contains(resourceKey) is false) + { + return; + } + // Process successors first var successors = previousRelationships.Successors .Find(resourceKey) @@ -108,10 +115,7 @@ await successors.IterTaskParallel(async successor => await processResource(succe cancellationToken); // Delete resource - if (resourceSet.Contains(resourceKey)) - { - await deleteResource(resourceKey, cancellationToken); - } + await deleteResource(resourceKey, cancellationToken); } } }