From 88cc93018e9064498d250b0a11e2e1d20658fa75 Mon Sep 17 00:00:00 2001 From: abilan Date: Mon, 27 Feb 2023 17:20:40 -0500 Subject: [PATCH] Fix DynamoDbLockRepository.renew() logic The new `TTL` must come with `+leaseDuration` --- .../integration/aws/lock/DynamoDbLockRepository.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/integration/aws/lock/DynamoDbLockRepository.java b/src/main/java/org/springframework/integration/aws/lock/DynamoDbLockRepository.java index 2bfb363..4674e59 100644 --- a/src/main/java/org/springframework/integration/aws/lock/DynamoDbLockRepository.java +++ b/src/main/java/org/springframework/integration/aws/lock/DynamoDbLockRepository.java @@ -404,12 +404,16 @@ public class DynamoDbLockRepository implements InitializingBean, DisposableBean, public boolean renew(String lock) { awaitForActive(); if (this.heldLocks.contains(lock)) { + ValueMap valueMap = + new ValueMap() + .withNumber(":ttl", ttlEpochSeconds()); + valueMap.putAll(this.ownerAttribute); UpdateItemSpec updateItemSpec = new UpdateItemSpec() .withPrimaryKey(KEY_ATTR, lock) .withUpdateExpression("SET " + TTL_ATTR + " = :ttl") .withConditionExpression(LOCK_EXISTS_EXPRESSION) - .withValueMap(ownerWithCurrentTimeValues()); + .withValueMap(valueMap); try { this.lockTable.updateItem(updateItemSpec); return true;