public void LockWillTimeout() { var provider = new MongoJobLockProvider(IoC.GetInstance <IJobLockRepository>()); JobLock v1 = provider.Acquire("Test"); Console.WriteLine(v1); Assert.True(v1.LockAcquired); JobLock v2 = provider.Acquire("Test"); Console.WriteLine(v2); Assert.False(v2.LockAcquired); var l = Repository.GetByName("Test"); l.CreatedDate = l.CreatedDate.Subtract(TimeSpan.FromMinutes(25)); Repository.Save(l); JobLock v3 = provider.Acquire("Test"); Console.WriteLine(v3); Assert.True(v3.LockAcquired); v1.Dispose(); v2.Dispose(); v3.Dispose(); }
public override void Release(JobLock jobLock) { if (!jobLock.LockAcquired) { if (Settings.Current.LogJobLocks) { string processName = "{Unknown}"; int processId = 0; try { Process p = Process.GetCurrentProcess(); processId = p.Id; processName = p.ProcessName; } catch {} Log.Debug().Message("Tried to release job lock '{0}' that wasn't acquired on {1}; process {2}:{3}", jobLock.LockName, Environment.MachineName, processName, processId).Write(); } return; } try { _cacheClient.Remove("joblock:" + jobLock.LockName); } catch (Exception e) { Log.Error().Message("Error attempting to release job lock '{0}' on {1}.", jobLock.LockName, Environment.MachineName).Exception(e).Report().Write(); } if (Settings.Current.LogJobLocks) { string processName = "{Unknown}"; int processId = 0; try { Process p = Process.GetCurrentProcess(); processId = p.Id; processName = p.ProcessName; } catch {} Log.Debug().Message("Released job lock '{0}' on {1}; process {2}:{3}", jobLock.LockName, Environment.MachineName, processName, processId).Write(); } jobLock.SetReleased(); }
public void CanMachineLock() { var provider = new RedisJobLockProvider(_cacheClient); JobLock v1 = provider.Acquire("Test"); Console.WriteLine(v1); Assert.True(v1.LockAcquired); JobLock v2 = provider.Acquire("Test"); Console.WriteLine(v2); Assert.False(v2.LockAcquired); v1.Dispose(); JobLock v3 = provider.Acquire("Test"); Console.WriteLine(v3); Assert.True(v3.LockAcquired); v2.Dispose(); v3.Dispose(); }
public void CanMachineLock() { var provider = new MongoMachineJobLockProvider(IoC.GetInstance <IJobLockRepository>()); JobLock v1 = provider.Acquire("Test"); Console.WriteLine(v1); Assert.True(v1.LockAcquired); JobLock v2 = provider.Acquire("Test"); Console.WriteLine(v2); Assert.False(v2.LockAcquired); v1.Dispose(); JobLock v3 = provider.Acquire("Test"); Console.WriteLine(v3); Assert.True(v3.LockAcquired); v2.Dispose(); v3.Dispose(); }
/// <summary> /// Releases the specified job lock. /// </summary> /// <param name="jobLock">The job lock.</param> public override void Release(JobLock jobLock) { //Do nothing for default jobLock.SetReleased(); }
/// <summary> /// Releases the specified job lock. /// </summary> /// <param name="jobLock">The job lock.</param> public override void Release(JobLock jobLock) { jobLock.SetReleased(); }