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();
        }
Example #2
0
        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();
        }
Example #3
0
        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();
 }
Example #6
0
 /// <summary>
 /// Releases the specified job lock.
 /// </summary>
 /// <param name="jobLock">The job lock.</param>
 public override void Release(JobLock jobLock)
 {
     jobLock.SetReleased();
 }
Example #7
0
 /// <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();
 }