diff --git a/README.md b/README.md
index f2c511f..73aa04a 100644
--- a/README.md
+++ b/README.md
@@ -142,6 +142,9 @@ Setup steps for working with the repository locally are documented [here](docs/D
## Release notes
+- 2.8.4
+ - Use `set_config` instead of `SET LOCAL` to avoid Postgres warnings ([#294](https://github.com/madelson/DistributedLock/pull/294), DistributedLock.Postgres 1.3.2). Thanks [behruzsaifov](https://github.com/behruzsaifov) for implementing!
+ - Patch MySqlConnector ([#296](https://github.com/madelson/DistributedLock/issues/296), DistributedLock.MySql 1.0.3)
- 2.8.3
- Bump MongoDB.Driver to avoid pulling in vulnerable packages ([#281](https://github.com/madelson/DistributedLock/pull/281), DistributedLock.MongoDB 1.0.2). Thanks [@Thynix](https://github.com/Thynix) for implementing!
- 2.8.2
diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index f598ff8..54ed681 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -9,7 +9,7 @@
-
+
diff --git a/src/DistributedLock.MySql/DistributedLock.MySql.csproj b/src/DistributedLock.MySql/DistributedLock.MySql.csproj
index ba277a4..31ca6ee 100644
--- a/src/DistributedLock.MySql/DistributedLock.MySql.csproj
+++ b/src/DistributedLock.MySql/DistributedLock.MySql.csproj
@@ -11,7 +11,7 @@
- 1.0.2
+ 1.0.3
1.0.0.0
Michael Adelson
Provides a distributed lock implementation based on MySql
diff --git a/src/DistributedLock.MySql/packages.lock.json b/src/DistributedLock.MySql/packages.lock.json
index 35bb9a6..afaad7a 100644
--- a/src/DistributedLock.MySql/packages.lock.json
+++ b/src/DistributedLock.MySql/packages.lock.json
@@ -25,21 +25,33 @@
},
"MySqlConnector": {
"type": "Direct",
- "requested": "[2.3.5, )",
- "resolved": "2.3.5",
- "contentHash": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==",
+ "requested": "[2.6.2, )",
+ "resolved": "2.6.2",
+ "contentHash": "dlTc/tsBa42szdvpj4nrHvQVUb0gsMwR9HT6J0Zz2OSqfP0CdYlGw+qQPqCpbnO97idfvclSjKYtM6y5QaBQaQ==",
"dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "7.0.1",
- "System.Diagnostics.DiagnosticSource": "7.0.2",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "System.Diagnostics.DiagnosticSource": "8.0.1",
+ "System.Threading.Tasks.Extensions": "4.6.3"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.2",
+ "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
+ "dependencies": {
+ "Microsoft.Bcl.AsyncInterfaces": "8.0.0",
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
- "resolved": "7.0.1",
- "contentHash": "pkeBFx0vqMW/A3aUVHh7MPu3WkBhaVlezhSZeb1c9XD0vUReYH1TLFSy5MxJgZfmz5LZzYoErMorlYZiwpOoNA==",
+ "resolved": "8.0.2",
+ "contentHash": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
"dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
"System.Buffers": "4.5.1",
+ "System.Diagnostics.DiagnosticSource": "8.0.1",
"System.Memory": "4.5.5"
}
},
@@ -55,8 +67,8 @@
},
"System.Diagnostics.DiagnosticSource": {
"type": "Transitive",
- "resolved": "7.0.2",
- "contentHash": "hYr3I9N9811e0Bjf2WNwAGGyTuAFbbTgX1RPLt/3Wbm68x3IGcX5Cl75CMmgT6WlNwLQ2tCCWfqYPpypjaf2xA==",
+ "resolved": "8.0.1",
+ "contentHash": "vaoWjvkG1aenR2XdjaVivlCV9fADfgyhW5bZtXT23qaEea0lWiUljdQuze4E31vKM7ZWJaSUsbYIKE3rnzfZUg==",
"dependencies": {
"System.Memory": "4.5.5",
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
@@ -79,15 +91,15 @@
},
"System.Runtime.CompilerServices.Unsafe": {
"type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
+ "resolved": "6.1.2",
+ "contentHash": "2hBr6zdbIBTDE3EhK7NSVNdX58uTK6iHW/P/Axmm9sl1xoGSLqDvMtpecn226TNwHByFokYwJmt/aQQNlO5CRw=="
},
"System.Threading.Tasks.Extensions": {
"type": "Transitive",
- "resolved": "4.5.4",
- "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
+ "resolved": "4.6.3",
+ "contentHash": "7sCiwilJLYbTZELaKnc7RecBBXWXA+xMLQWZKWawBxYjp6DBlSE3v9/UcvKBvr1vv2tTOhipiogM8rRmxlhrVA==",
"dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "4.5.3"
+ "System.Runtime.CompilerServices.Unsafe": "6.1.2"
}
},
"distributedlock.core": {
@@ -133,13 +145,14 @@
},
"MySqlConnector": {
"type": "Direct",
- "requested": "[2.3.5, )",
- "resolved": "2.3.5",
- "contentHash": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==",
+ "requested": "[2.6.2, )",
+ "resolved": "2.6.2",
+ "contentHash": "dlTc/tsBa42szdvpj4nrHvQVUb0gsMwR9HT6J0Zz2OSqfP0CdYlGw+qQPqCpbnO97idfvclSjKYtM6y5QaBQaQ==",
"dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "7.0.1",
- "System.Diagnostics.DiagnosticSource": "7.0.2",
- "System.Threading.Tasks.Extensions": "4.5.4"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "System.Diagnostics.DiagnosticSource": "8.0.1",
+ "System.Threading.Tasks.Extensions": "4.6.3"
}
},
"NETStandard.Library": {
@@ -159,12 +172,23 @@
"System.IO.Hashing": "10.0.5"
}
},
+ "Microsoft.Extensions.DependencyInjection.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.2",
+ "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
+ "dependencies": {
+ "Microsoft.Bcl.AsyncInterfaces": "8.0.0",
+ "System.Threading.Tasks.Extensions": "4.5.4"
+ }
+ },
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
- "resolved": "7.0.1",
- "contentHash": "pkeBFx0vqMW/A3aUVHh7MPu3WkBhaVlezhSZeb1c9XD0vUReYH1TLFSy5MxJgZfmz5LZzYoErMorlYZiwpOoNA==",
+ "resolved": "8.0.2",
+ "contentHash": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
"dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
"System.Buffers": "4.5.1",
+ "System.Diagnostics.DiagnosticSource": "8.0.1",
"System.Memory": "4.5.5"
}
},
@@ -185,8 +209,8 @@
},
"System.Diagnostics.DiagnosticSource": {
"type": "Transitive",
- "resolved": "7.0.2",
- "contentHash": "hYr3I9N9811e0Bjf2WNwAGGyTuAFbbTgX1RPLt/3Wbm68x3IGcX5Cl75CMmgT6WlNwLQ2tCCWfqYPpypjaf2xA==",
+ "resolved": "8.0.1",
+ "contentHash": "vaoWjvkG1aenR2XdjaVivlCV9fADfgyhW5bZtXT23qaEea0lWiUljdQuze4E31vKM7ZWJaSUsbYIKE3rnzfZUg==",
"dependencies": {
"System.Memory": "4.5.5",
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
@@ -223,10 +247,10 @@
},
"System.Threading.Tasks.Extensions": {
"type": "Transitive",
- "resolved": "4.5.4",
- "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
+ "resolved": "4.6.3",
+ "contentHash": "7sCiwilJLYbTZELaKnc7RecBBXWXA+xMLQWZKWawBxYjp6DBlSE3v9/UcvKBvr1vv2tTOhipiogM8rRmxlhrVA==",
"dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "4.5.3"
+ "System.Runtime.CompilerServices.Unsafe": "6.1.2"
}
},
"distributedlock.core": {
@@ -265,12 +289,13 @@
},
"MySqlConnector": {
"type": "Direct",
- "requested": "[2.3.5, )",
- "resolved": "2.3.5",
- "contentHash": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==",
+ "requested": "[2.6.2, )",
+ "resolved": "2.6.2",
+ "contentHash": "dlTc/tsBa42szdvpj4nrHvQVUb0gsMwR9HT6J0Zz2OSqfP0CdYlGw+qQPqCpbnO97idfvclSjKYtM6y5QaBQaQ==",
"dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "7.0.1",
- "System.Diagnostics.DiagnosticSource": "7.0.2"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "System.Diagnostics.DiagnosticSource": "8.0.1"
}
},
"Microsoft.Build.Tasks.Git": {
@@ -281,12 +306,19 @@
"System.IO.Hashing": "10.0.5"
}
},
+ "Microsoft.Extensions.DependencyInjection.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.2",
+ "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg=="
+ },
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
- "resolved": "7.0.1",
- "contentHash": "pkeBFx0vqMW/A3aUVHh7MPu3WkBhaVlezhSZeb1c9XD0vUReYH1TLFSy5MxJgZfmz5LZzYoErMorlYZiwpOoNA==",
+ "resolved": "8.0.2",
+ "contentHash": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
"dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
"System.Buffers": "4.5.1",
+ "System.Diagnostics.DiagnosticSource": "8.0.1",
"System.Memory": "4.5.5"
}
},
diff --git a/src/DistributedLock.Postgres/DistributedLock.Postgres.csproj b/src/DistributedLock.Postgres/DistributedLock.Postgres.csproj
index 1100aee..c4756c1 100644
--- a/src/DistributedLock.Postgres/DistributedLock.Postgres.csproj
+++ b/src/DistributedLock.Postgres/DistributedLock.Postgres.csproj
@@ -11,7 +11,7 @@
- 1.3.1
+ 1.3.2
1.0.0.0
Michael Adelson
Provides a distributed lock implementation based on Postgresql
diff --git a/src/DistributedLock.Postgres/PostgresAdvisoryLock.cs b/src/DistributedLock.Postgres/PostgresAdvisoryLock.cs
index c5093bf..6146310 100644
--- a/src/DistributedLock.Postgres/PostgresAdvisoryLock.cs
+++ b/src/DistributedLock.Postgres/PostgresAdvisoryLock.cs
@@ -54,8 +54,8 @@ private PostgresAdvisoryLock(bool isShared)
// the transaction or the save point are rolled back.
var capturedTimeoutSettings = await CaptureTimeoutSettingsIfNeededAsync(connection, cancellationToken).ConfigureAwait(false);
- // Our acquire command will use SET LOCAL to set up statement timeouts. This lasts until the end
- // of the current transaction instead of just the current batch if we're in a transaction. To make sure
+ // Our acquire command will use set_config(..., is_local: true), which behaves like SET LOCAL, to set up statement timeouts.
+ // This lasts until the end of the current transaction instead of just the current batch if we're in a transaction. To make sure
// we don't leak those settings, in the case of a transaction, we first set up a save point which we can
// later roll back (only in cases where we don't acquire a transaction scoped lock - taking the settings changes with it but NOT the lock).
// Because we can't confidently roll back a save point without knowing that it has been set up, we start the save point in its own
@@ -176,10 +176,13 @@ private DatabaseCommand CreateAcquireCommand(DatabaseConnection connection, Post
var commandText = new StringBuilder();
// We set the statement_timeout to 0 (inf) because we want everything to be driven by the lock_timeout.
- commandText.AppendLine("SET LOCAL statement_timeout = 0;");
// We set the lock timeout to our timeout, with the exception that if our timeout is zero we set it to inf because
// we'll be using the pg_try_advisory_lock function which doesn't block in that case.
- commandText.AppendLine($"SET LOCAL lock_timeout = {(timeout.IsZero || timeout.IsInfinite ? 0 : timeout.InMilliseconds)};");
+ // We use set_config(..., is_local: true) rather than SET LOCAL: it behaves the same (see PostgresBehaviorTest), but SET LOCAL
+ // logs "SET LOCAL can only be used in transaction blocks" when we're not in a transaction. See https://github.com/madelson/DistributedLock/issues/90
+ // The calls are wrapped in a DO block so that they don't return a result set, since we read the result of this command with ExecuteScalar.
+ var lockTimeout = timeout.IsZero || timeout.IsInfinite ? 0 : timeout.InMilliseconds;
+ commandText.AppendLine($"DO $$BEGIN PERFORM pg_catalog.set_config('statement_timeout', '0', true); PERFORM pg_catalog.set_config('lock_timeout', '{lockTimeout}', true); END$$;");
commandText.Append("SELECT ");
var isTry = timeout.IsZero;
diff --git a/src/DistributedLock.Tests/AbstractTestCases/DistributedLockCoreTestCases.cs b/src/DistributedLock.Tests/AbstractTestCases/DistributedLockCoreTestCases.cs
index 77d791a..a404bbf 100644
--- a/src/DistributedLock.Tests/AbstractTestCases/DistributedLockCoreTestCases.cs
+++ b/src/DistributedLock.Tests/AbstractTestCases/DistributedLockCoreTestCases.cs
@@ -115,7 +115,7 @@ public async Task TestTimeouts()
await using (await this._lockProvider.CreateLock(lockName).AcquireAsync())
{
var timeout = TimeSpan.FromSeconds(.2);
- var waitTime = TimeSpan.FromSeconds(.5);
+ var waitTime = timeout + TimeSpan.FromSeconds(2);
var syncAcquireTask = Task.Run(() => @lock.Acquire(timeout));
(await syncAcquireTask.ContinueWith(_ => { }).TryWaitAsync(waitTime)).ShouldEqual(true, "sync acquire " + this.GetType().Name);
diff --git a/src/DistributedLock.Tests/Tests/Postgres/PostgresBehaviorTest.cs b/src/DistributedLock.Tests/Tests/Postgres/PostgresBehaviorTest.cs
index 74ff8e6..ad6d450 100644
--- a/src/DistributedLock.Tests/Tests/Postgres/PostgresBehaviorTest.cs
+++ b/src/DistributedLock.Tests/Tests/Postgres/PostgresBehaviorTest.cs
@@ -48,6 +48,43 @@ public async Task TestPostgresCommandAutomaticallyParticipatesInTransaction()
(await commandInTransaction.ExecuteScalarAsync()).ShouldEqual("2020ms");
}
+ ///
+ /// Demonstrates that outside of a transaction set_config(..., is_local: true) behaves like SET LOCAL: the setting applies
+ /// to the rest of the multi-statement command and does not leak into later commands (unlike SET). This is why we
+ /// can use set_config instead of SET LOCAL when acquiring locks. Unlike SET LOCAL, set_config does not log
+ /// "SET LOCAL can only be used in transaction blocks" (see https://github.com/madelson/DistributedLock/issues/90).
+ ///
+ [TestCase(false)]
+ [TestCase(true)]
+ public async Task TestSetConfigIsLocalBehavesLikeSetLocalOutsideOfTransaction(bool useSetConfig)
+ {
+ using var connection = new NpgsqlConnection(TestingPostgresDb.DefaultConnectionString);
+ await connection.OpenAsync();
+ List notices = [];
+ connection.Notice += (_, e) => notices.Add(e.Notice.MessageText);
+
+ // set_config is wrapped in a DO block so that it does not return a result set, like SET LOCAL
+ string SetLockTimeout(int milliseconds) => useSetConfig
+ ? $"DO $$BEGIN PERFORM pg_catalog.set_config('lock_timeout', '{milliseconds}', true); END$$;"
+ : $"SET LOCAL lock_timeout = {milliseconds};";
+
+ (await ExecuteAsync($"{SetLockTimeout(12345)} CREATE TEMPORARY TABLE temp_table_{useSetConfig} (id INT); SHOW lock_timeout;")).ShouldEqual("12345ms");
+ (await ExecuteAsync("SHOW lock_timeout;")).ShouldEqual("0");
+ (await ExecuteAsync($"{SetLockTimeout(456)} SELECT 'x'")).ShouldEqual("x");
+ (await ExecuteAsync("SHOW lock_timeout")).ShouldEqual("0");
+
+ const string SetLocalWarning = "SET LOCAL can only be used in transaction blocks";
+ if (useSetConfig) { Assert.That(notices, Has.None.Contains(SetLocalWarning)); }
+ else { Assert.That(notices, Has.Some.Contains(SetLocalWarning)); }
+
+ async Task ExecuteAsync(string sql)
+ {
+ using var command = connection.CreateCommand();
+ command.CommandText = sql;
+ return (string?)await command.ExecuteScalarAsync();
+ }
+ }
+
[Test]
public Task TestTransactionCancellationRecovery() =>
this.TestTransactionCancellationOrTimeoutRecovery(useTimeout: false);
diff --git a/src/DistributedLock.Tests/Tests/Postgres/PostgresDistributedLockTest.cs b/src/DistributedLock.Tests/Tests/Postgres/PostgresDistributedLockTest.cs
index e8802b8..90cc55d 100644
--- a/src/DistributedLock.Tests/Tests/Postgres/PostgresDistributedLockTest.cs
+++ b/src/DistributedLock.Tests/Tests/Postgres/PostgresDistributedLockTest.cs
@@ -117,6 +117,22 @@ public async Task TestWorksWithAmbientTransaction(
(await GetTimeoutAsync("statement_timeout", connectionCommand)).ShouldEqual("0");
}
+ // Reproduces https://github.com/madelson/DistributedLock/issues/289
+ [Test]
+ public async Task TestLockAcquisitionDoesNotEmitNotices()
+ {
+ using var connection = new NpgsqlConnection(TestingPostgresDb.DefaultConnectionString);
+ List notices = [];
+ connection.Notice += (_, e) => notices.Add(e.Notice.MessageText);
+
+ await connection.OpenAsync();
+
+ var @lock = new PostgresDistributedLock(new PostgresAdvisoryLockKey(TestHelper.UniqueName, allowHashing: true), connection);
+ await (await @lock.AcquireAsync()).DisposeAsync();
+
+ Assert.IsEmpty(notices);
+ }
+
private static Task
- 2.8.3
+ 2.8.4
2.0.0.0
Michael Adelson
Provides easy-to-use mutexes, reader-writer locks, and semaphores that can synchronize across processes and machines. This is an umbrella package that brings in the entire family of DistributedLock.* packages (e. g. DistributedLock.SqlServer) as references. Those packages can also be installed individually.
diff --git a/src/DistributedLock/packages.lock.json b/src/DistributedLock/packages.lock.json
index 0913e31..d7c3c95 100644
--- a/src/DistributedLock/packages.lock.json
+++ b/src/DistributedLock/packages.lock.json
@@ -397,10 +397,10 @@
},
"System.Threading.Tasks.Extensions": {
"type": "Transitive",
- "resolved": "4.6.0",
- "contentHash": "I5G6Y8jb0xRtGUC9Lahy7FUvlYlnGMMkbuKAQBy8Jb7Y6Yn8OlBEiUOY0PqZ0hy6Ua8poVA1ui1tAIiXNxGdsg==",
+ "resolved": "4.6.3",
+ "contentHash": "7sCiwilJLYbTZELaKnc7RecBBXWXA+xMLQWZKWawBxYjp6DBlSE3v9/UcvKBvr1vv2tTOhipiogM8rRmxlhrVA==",
"dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.1.0"
+ "System.Runtime.CompilerServices.Unsafe": "6.1.2"
}
},
"distributedlock.azure": {
@@ -427,7 +427,7 @@
"type": "Project",
"dependencies": {
"DistributedLock.Core": "[1.0.9, )",
- "MySqlConnector": "[2.3.5, )"
+ "MySqlConnector": "[2.6.2, )"
}
},
"distributedlock.postgres": {
@@ -508,13 +508,14 @@
},
"MySqlConnector": {
"type": "CentralTransitive",
- "requested": "[2.3.5, )",
- "resolved": "2.3.5",
- "contentHash": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==",
+ "requested": "[2.6.2, )",
+ "resolved": "2.6.2",
+ "contentHash": "dlTc/tsBa42szdvpj4nrHvQVUb0gsMwR9HT6J0Zz2OSqfP0CdYlGw+qQPqCpbnO97idfvclSjKYtM6y5QaBQaQ==",
"dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "7.0.1",
- "System.Diagnostics.DiagnosticSource": "7.0.2",
- "System.Threading.Tasks.Extensions": "4.5.4"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "System.Diagnostics.DiagnosticSource": "8.0.1",
+ "System.Threading.Tasks.Extensions": "4.6.3"
}
},
"Npgsql": {
@@ -1059,10 +1060,10 @@
},
"System.Threading.Tasks.Extensions": {
"type": "Transitive",
- "resolved": "4.6.0",
- "contentHash": "I5G6Y8jb0xRtGUC9Lahy7FUvlYlnGMMkbuKAQBy8Jb7Y6Yn8OlBEiUOY0PqZ0hy6Ua8poVA1ui1tAIiXNxGdsg==",
+ "resolved": "4.6.3",
+ "contentHash": "7sCiwilJLYbTZELaKnc7RecBBXWXA+xMLQWZKWawBxYjp6DBlSE3v9/UcvKBvr1vv2tTOhipiogM8rRmxlhrVA==",
"dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.1.0"
+ "System.Runtime.CompilerServices.Unsafe": "6.1.2"
}
},
"System.ValueTuple": {
@@ -1111,7 +1112,7 @@
"type": "Project",
"dependencies": {
"DistributedLock.Core": "[1.0.9, )",
- "MySqlConnector": "[2.3.5, )"
+ "MySqlConnector": "[2.6.2, )"
}
},
"distributedlock.oracle": {
@@ -1208,13 +1209,14 @@
},
"MySqlConnector": {
"type": "CentralTransitive",
- "requested": "[2.3.5, )",
- "resolved": "2.3.5",
- "contentHash": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==",
+ "requested": "[2.6.2, )",
+ "resolved": "2.6.2",
+ "contentHash": "dlTc/tsBa42szdvpj4nrHvQVUb0gsMwR9HT6J0Zz2OSqfP0CdYlGw+qQPqCpbnO97idfvclSjKYtM6y5QaBQaQ==",
"dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "7.0.1",
- "System.Diagnostics.DiagnosticSource": "7.0.2",
- "System.Threading.Tasks.Extensions": "4.5.4"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "System.Diagnostics.DiagnosticSource": "8.0.1",
+ "System.Threading.Tasks.Extensions": "4.6.3"
}
},
"Npgsql": {
@@ -1706,10 +1708,10 @@
},
"System.Threading.Tasks.Extensions": {
"type": "Transitive",
- "resolved": "4.6.0",
- "contentHash": "I5G6Y8jb0xRtGUC9Lahy7FUvlYlnGMMkbuKAQBy8Jb7Y6Yn8OlBEiUOY0PqZ0hy6Ua8poVA1ui1tAIiXNxGdsg==",
+ "resolved": "4.6.3",
+ "contentHash": "7sCiwilJLYbTZELaKnc7RecBBXWXA+xMLQWZKWawBxYjp6DBlSE3v9/UcvKBvr1vv2tTOhipiogM8rRmxlhrVA==",
"dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.1.0"
+ "System.Runtime.CompilerServices.Unsafe": "6.1.2"
}
},
"System.ValueTuple": {
@@ -1740,7 +1742,7 @@
"type": "Project",
"dependencies": {
"DistributedLock.Core": "[1.0.9, )",
- "MySqlConnector": "[2.3.5, )"
+ "MySqlConnector": "[2.6.2, )"
}
},
"distributedlock.postgres": {
@@ -1820,13 +1822,14 @@
},
"MySqlConnector": {
"type": "CentralTransitive",
- "requested": "[2.3.5, )",
- "resolved": "2.3.5",
- "contentHash": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==",
+ "requested": "[2.6.2, )",
+ "resolved": "2.6.2",
+ "contentHash": "dlTc/tsBa42szdvpj4nrHvQVUb0gsMwR9HT6J0Zz2OSqfP0CdYlGw+qQPqCpbnO97idfvclSjKYtM6y5QaBQaQ==",
"dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "7.0.1",
- "System.Diagnostics.DiagnosticSource": "7.0.2",
- "System.Threading.Tasks.Extensions": "4.5.4"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "System.Diagnostics.DiagnosticSource": "8.0.1",
+ "System.Threading.Tasks.Extensions": "4.6.3"
}
},
"Npgsql": {
@@ -2384,7 +2387,7 @@
"type": "Project",
"dependencies": {
"DistributedLock.Core": "[1.0.9, )",
- "MySqlConnector": "[2.3.5, )"
+ "MySqlConnector": "[2.6.2, )"
}
},
"distributedlock.oracle": {
@@ -2478,12 +2481,13 @@
},
"MySqlConnector": {
"type": "CentralTransitive",
- "requested": "[2.3.5, )",
- "resolved": "2.3.5",
- "contentHash": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==",
+ "requested": "[2.6.2, )",
+ "resolved": "2.6.2",
+ "contentHash": "dlTc/tsBa42szdvpj4nrHvQVUb0gsMwR9HT6J0Zz2OSqfP0CdYlGw+qQPqCpbnO97idfvclSjKYtM6y5QaBQaQ==",
"dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "7.0.1",
- "System.Diagnostics.DiagnosticSource": "7.0.2"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "System.Diagnostics.DiagnosticSource": "8.0.1"
}
},
"Npgsql": {
diff --git a/src/DistributedLockTaker/packages.lock.json b/src/DistributedLockTaker/packages.lock.json
index 98f233a..7c5f37a 100644
--- a/src/DistributedLockTaker/packages.lock.json
+++ b/src/DistributedLockTaker/packages.lock.json
@@ -471,10 +471,10 @@
},
"System.Threading.Tasks.Extensions": {
"type": "Transitive",
- "resolved": "4.6.0",
- "contentHash": "I5G6Y8jb0xRtGUC9Lahy7FUvlYlnGMMkbuKAQBy8Jb7Y6Yn8OlBEiUOY0PqZ0hy6Ua8poVA1ui1tAIiXNxGdsg==",
+ "resolved": "4.6.3",
+ "contentHash": "7sCiwilJLYbTZELaKnc7RecBBXWXA+xMLQWZKWawBxYjp6DBlSE3v9/UcvKBvr1vv2tTOhipiogM8rRmxlhrVA==",
"dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.1.0"
+ "System.Runtime.CompilerServices.Unsafe": "6.1.2"
}
},
"System.ValueTuple": {
@@ -496,10 +496,10 @@
"dependencies": {
"DistributedLock.Azure": "[1.0.2, )",
"DistributedLock.FileSystem": "[1.0.3, )",
- "DistributedLock.MongoDB": "[1.0.1, )",
- "DistributedLock.MySql": "[1.0.2, )",
+ "DistributedLock.MongoDB": "[1.0.2, )",
+ "DistributedLock.MySql": "[1.0.3, )",
"DistributedLock.Oracle": "[1.0.5, )",
- "DistributedLock.Postgres": "[1.3.1, )",
+ "DistributedLock.Postgres": "[1.3.2, )",
"DistributedLock.Redis": "[1.1.1, )",
"DistributedLock.SqlServer": "[1.0.7, )",
"DistributedLock.WaitHandles": "[1.0.1, )",
@@ -538,7 +538,7 @@
"type": "Project",
"dependencies": {
"DistributedLock.Core": "[1.0.9, )",
- "MySqlConnector": "[2.3.5, )"
+ "MySqlConnector": "[2.6.2, )"
}
},
"distributedlock.oracle": {
@@ -635,13 +635,14 @@
},
"MySqlConnector": {
"type": "CentralTransitive",
- "requested": "[2.3.5, )",
- "resolved": "2.3.5",
- "contentHash": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==",
+ "requested": "[2.6.2, )",
+ "resolved": "2.6.2",
+ "contentHash": "dlTc/tsBa42szdvpj4nrHvQVUb0gsMwR9HT6J0Zz2OSqfP0CdYlGw+qQPqCpbnO97idfvclSjKYtM6y5QaBQaQ==",
"dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "7.0.1",
- "System.Diagnostics.DiagnosticSource": "7.0.2",
- "System.Threading.Tasks.Extensions": "4.5.4"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "System.Diagnostics.DiagnosticSource": "8.0.1",
+ "System.Threading.Tasks.Extensions": "4.6.3"
}
},
"Npgsql": {
@@ -1157,10 +1158,10 @@
"dependencies": {
"DistributedLock.Azure": "[1.0.2, )",
"DistributedLock.FileSystem": "[1.0.3, )",
- "DistributedLock.MongoDB": "[1.0.1, )",
- "DistributedLock.MySql": "[1.0.2, )",
+ "DistributedLock.MongoDB": "[1.0.2, )",
+ "DistributedLock.MySql": "[1.0.3, )",
"DistributedLock.Oracle": "[1.0.5, )",
- "DistributedLock.Postgres": "[1.3.1, )",
+ "DistributedLock.Postgres": "[1.3.2, )",
"DistributedLock.Redis": "[1.1.1, )",
"DistributedLock.SqlServer": "[1.0.7, )",
"DistributedLock.WaitHandles": "[1.0.1, )",
@@ -1194,7 +1195,7 @@
"type": "Project",
"dependencies": {
"DistributedLock.Core": "[1.0.9, )",
- "MySqlConnector": "[2.3.5, )"
+ "MySqlConnector": "[2.6.2, )"
}
},
"distributedlock.oracle": {
@@ -1286,11 +1287,12 @@
},
"MySqlConnector": {
"type": "CentralTransitive",
- "requested": "[2.3.5, )",
- "resolved": "2.3.5",
- "contentHash": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==",
+ "requested": "[2.6.2, )",
+ "resolved": "2.6.2",
+ "contentHash": "dlTc/tsBa42szdvpj4nrHvQVUb0gsMwR9HT6J0Zz2OSqfP0CdYlGw+qQPqCpbnO97idfvclSjKYtM6y5QaBQaQ==",
"dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "7.0.1"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2"
}
},
"Npgsql": {