Skip to content

Commit 74f577e

Browse files
committed
Fix "Cannot release the application lock" exception in SQL Server
1 parent f39f2c2 commit 74f577e

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

‎src/Hangfire.SqlServer/SqlServerDistributedLock.cs‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
using System;
1818
using System.Collections.Generic;
1919
using System.Data;
20+
using System.Data.SqlClient;
2021
using System.Threading;
2122
using Dapper;
2223
using Hangfire.Annotations;
@@ -58,7 +59,7 @@ public SqlServerDistributedLock([NotNull] SqlServerStorage storage, [NotNull] st
5859
_resource = resource;
5960
_connection = storage.CreateAndOpenConnection();
6061

61-
if (!AcquiredLocks.Value.ContainsKey(_resource))
62+
if (!AcquiredLocks.Value.ContainsKey(_resource) || AcquiredLocks.Value[_resource] == 0)
6263
{
6364
Acquire(_connection, _resource, timeout);
6465
AcquiredLocks.Value[_resource] = 1;
@@ -83,8 +84,8 @@ public void Dispose()
8384

8485
try
8586
{
86-
Release(_connection, _resource);
8787
AcquiredLocks.Value.Remove(_resource);
88+
Release(_connection, _resource);
8889
}
8990
finally
9091
{

0 commit comments

Comments
 (0)