diff --git a/src/Directory.Build.props b/src/Directory.Build.props index d2c9ba606..7b898a0cf 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -4,10 +4,10 @@ https://github.com/danielgerlag/workflow-core/blob/master/LICENSE.md git https://github.com/danielgerlag/workflow-core.git - 3.17.0 - 3.17.0.0 - 3.17.0.0 + 3.17.1 + 3.17.1.0 + 3.17.1.0 https://github.com/danielgerlag/workflow-core/raw/master/src/logo.png - 3.17.0 + 3.17.1 diff --git a/src/providers/WorkflowCore.Providers.AWS/Services/DynamoLockProvider.cs b/src/providers/WorkflowCore.Providers.AWS/Services/DynamoLockProvider.cs index 0863f1393..57e6387a0 100644 --- a/src/providers/WorkflowCore.Providers.AWS/Services/DynamoLockProvider.cs +++ b/src/providers/WorkflowCore.Providers.AWS/Services/DynamoLockProvider.cs @@ -1,4 +1,4 @@ -using Amazon.DynamoDBv2; +using Amazon.DynamoDBv2; using Amazon.DynamoDBv2.Model; using Amazon.Runtime; using Microsoft.Extensions.Logging; @@ -67,7 +67,15 @@ public async Task AcquireLock(string Id, CancellationToken cancellationTok if (response.HttpStatusCode == System.Net.HttpStatusCode.OK) { - _localLocks.Add(Id); + _mutex.WaitOne(); + try + { + _localLocks.Add(Id); + } + finally + { + _mutex.Set(); + } return true; } } @@ -147,6 +155,9 @@ private async void SendHeartbeat() { foreach (var item in _localLocks.ToArray()) { + if (string.IsNullOrEmpty(item)) + continue; + var req = new PutItemRequest { TableName = _tableName,