public void Unlock(LockReference lockReference) { if (!(lockReference is RedLockReference redLockReference)) { throw new ArgumentException("Only type of RedisLockReference can be used"); } if (!redLockReference.LockAcquired) { return; } redLockReference.Release(); }
public void It_Should_Handover_When_MasterRoleExists_And_Closed_Gracefully() { //Arrange var lockReference = new LockReference(true); _provider.Setup(provider => provider.LockAsync(_clusterInformation.ClusterName)) .ReturnsAsync(lockReference); _sut.Claim().Wait(); //Act _sut.Close(); //Assert _provider.Verify(provider => provider.Unlock(lockReference)); }
internal async Task Claim() { _lockReference = await _provider.LockAsync(ClusterInformation.ClusterName); }
public MinilockClusterStatusTracker(IMinilockProvider provider, ClusterInformation clusterInformation) { _provider = provider; _lockReference = new LockReference(false); ClusterInformation = clusterInformation; }