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,