public DistributedLockException(string resource, string lockId, DistributedLockBadStatus status, Exception innerException = null) : base( "Lock is not acquired", innerException) { base.Data.Add("Resource", resource); base.Data.Add("LockId", lockId); base.Data.Add("Status", status); }
public async Task <IDisposable> CreateLockAsync(string resource, TimeSpan?expiryTime = null, TimeSpan?waitTime = null, TimeSpan?retryTime = null, CancellationToken cancellationToken = default) { await Connect(); if (_options.InstanceName != null) { resource = string.Join('-', _options.InstanceName, resource); } IRedLock @lock = await _distributedLockFactory.CreateLockAsync(resource, expiryTime ?? _defaultExpiryTime, waitTime ?? _defaultWaitTime, retryTime ?? _defaultRetryTime, cancellationToken); if (@lock.IsAcquired) { return(@lock); } var lockId = @lock.LockId; DistributedLockBadStatus status = RedLockStatusToDistributedLockBadStatus(@lock.Status); @lock.Dispose(); throw new DistributedLockException(resource, lockId, status); }