public async Task <IActionResult> Handle(string id, CancellationToken cancellationToken = default) { var result = await _workflowInstanceDeleter.DeleteAsync(id, cancellationToken); if (result.Status == DeleteWorkflowInstanceResultStatus.NotFound) { return(NotFound()); } return(NoContent()); }
public async Task <DeleteWorkflowInstanceResult> DeleteAsync(string workflowInstanceId, CancellationToken cancellationToken = default) { var workflowInstanceLockKey = $"workflow-instance:{workflowInstanceId}"; 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"); } return(await _workflowInstanceDeleter.DeleteAsync(workflowInstanceId, cancellationToken)); }