Remove unnecessary ambient locking code

This commit is contained in:
Sipke Schoorstra 2021-09-09 21:04:54 +02:00
parent 64636a362b
commit fc96051628

View file

@ -3,7 +3,6 @@ using System.Threading.Tasks;
using Elsa.Exceptions;
using Elsa.Options;
using Elsa.Services;
using Elsa.Services.Models;
namespace Elsa.Decorators
{
@ -23,23 +22,12 @@ namespace Elsa.Decorators
public async Task<CancelWorkflowInstanceResult> CancelAsync(string workflowInstanceId, CancellationToken cancellationToken = default)
{
var workflowInstanceLockKey = $"workflow-instance:{workflowInstanceId}";
var currentWorkflowInstanceLockHandle = AmbientLockContext.GetCurrentWorkflowInstanceLock(workflowInstanceId);
var workflowInstanceLockHandle = currentWorkflowInstanceLockHandle ?? await _distributedLockProvider.AcquireLockAsync(workflowInstanceLockKey, _elsaOptions.DistributedLockTimeout, cancellationToken);
await using var workflowInstanceLockHandle = await _distributedLockProvider.AcquireLockAsync(workflowInstanceLockKey, _elsaOptions.DistributedLockTimeout, cancellationToken);
if (workflowInstanceLockHandle == null)
throw new LockAcquisitionException("Could not acquire a lock within the configured amount of time");
try
{
AmbientLockContext.SetCurrentWorkflowInstanceLock(workflowInstanceId, workflowInstanceLockHandle);
return await _workflowInstanceCanceller.CancelAsync(workflowInstanceId, cancellationToken);
}
finally
{
AmbientLockContext.DeleteCurrentWorkflowInstanceLock(workflowInstanceId);
await workflowInstanceLockHandle.DisposeAsync();
}
return await _workflowInstanceCanceller.CancelAsync(workflowInstanceId, cancellationToken);
}
}
}