コード例 #1
0
        public async Task <bool> CheckIsStillLockedAsync(DistributedLockSettings settings)
        {
            Check.NotNull(settings, nameof(settings));

            if (settings is NullLockSettings)
            {
                return(await NullLockManager.CheckIsStillLockedAsync(settings).ConfigureAwait(false));
            }

            try
            {
                using var scope = _serviceScopeFactory.CreateScope();
                return(await CheckIsStillLockedAsync(
                           settings.ResourceName,
                           settings.UniqueId,
                           settings.HeartbeatTimeout,
                           scope.ServiceProvider)
                       .ConfigureAwait(false));
            }
            catch (Exception ex)
            {
                _logger.LogFailedToCheckLock(settings, ex);
                return(false);
            }
        }
コード例 #2
0
        public async Task <bool> CheckIsStillLockedAsync(DistributedLockSettings settings)
        {
            Check.NotNull(settings, nameof(settings));

            if (settings is NullLockSettings)
            {
                return(await NullLockManager.CheckIsStillLockedAsync(settings).ConfigureAwait(false));
            }

            try
            {
                using var scope = _serviceScopeFactory.CreateScope();
                return(await CheckIsStillLockedAsync(
                           settings.ResourceName,
                           settings.UniqueId,
                           settings.HeartbeatTimeout,
                           scope.ServiceProvider)
                       .ConfigureAwait(false));
            }
            catch (Exception ex)
            {
                _logger.LogError(
                    CoreEventIds.FailedToCheckDistributedLock,
                    ex,
                    "Failed to check lock {lockName} ({lockUniqueId}). See inner exception for details.",
                    settings.ResourceName,
                    settings.UniqueId);

                return(false);
            }
        }
コード例 #3
0
        private async Task CheckIsStillLockedAsync()
        {
            if (Status != DistributedLockStatus.Acquired)
            {
                return;
            }

            if (!await _lockManager.CheckIsStillLockedAsync(_settings).ConfigureAwait(false))
            {
                Status = DistributedLockStatus.Lost;
            }
        }