Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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));
        }