diff --git a/src/main/java/org/springframework/integration/aws/lock/DynamoDbLockRegistry.java b/src/main/java/org/springframework/integration/aws/lock/DynamoDbLockRegistry.java index 5f83332..5599cae 100644 --- a/src/main/java/org/springframework/integration/aws/lock/DynamoDbLockRegistry.java +++ b/src/main/java/org/springframework/integration/aws/lock/DynamoDbLockRegistry.java @@ -46,7 +46,7 @@ import org.springframework.util.Assert; */ public class DynamoDbLockRegistry implements ExpirableLockRegistry, RenewableLockRegistry { - private static final int DEFAULT_IDLE = 1000; + private static final int DEFAULT_IDLE = 100; private final Map locks = new ConcurrentHashMap<>(); 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 9602dab..959c858 100644 --- a/src/main/java/org/springframework/integration/aws/lock/DynamoDbLockRepository.java +++ b/src/main/java/org/springframework/integration/aws/lock/DynamoDbLockRepository.java @@ -29,7 +29,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import org.apache.commons.logging.Log; @@ -54,7 +53,6 @@ import software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; -import org.springframework.scheduling.concurrent.CustomizableThreadFactory; import org.springframework.util.Assert; /** @@ -112,8 +110,6 @@ public class DynamoDbLockRepository implements InitializingBean, DisposableBean, private static final Log LOGGER = LogFactory.getLog(DynamoDbLockRegistry.class); - private final ThreadFactory customizableThreadFactory = new CustomizableThreadFactory("dynamodb-lock-registry-"); - private final CountDownLatch createTableLatch = new CountDownLatch(1); private final Set heldLocks = Collections.synchronizedSet(new HashSet<>()); diff --git a/src/test/java/org/springframework/integration/aws/leader/DynamoDbLockRegistryLeaderInitiatorTests.java b/src/test/java/org/springframework/integration/aws/leader/DynamoDbLockRegistryLeaderInitiatorTests.java index ce55340..c68aafc 100644 --- a/src/test/java/org/springframework/integration/aws/leader/DynamoDbLockRegistryLeaderInitiatorTests.java +++ b/src/test/java/org/springframework/integration/aws/leader/DynamoDbLockRegistryLeaderInitiatorTests.java @@ -25,7 +25,6 @@ import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import software.amazon.awssdk.core.retry.backoff.FixedDelayBackoffStrategy; import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; @@ -46,7 +45,6 @@ import static org.assertj.core.api.Assertions.assertThat; * * @since 2.0 */ -@Disabled class DynamoDbLockRegistryLeaderInitiatorTests implements LocalstackContainerTest { private static DynamoDbAsyncClient DYNAMO_DB; @@ -91,7 +89,7 @@ class DynamoDbLockRegistryLeaderInitiatorTests implements LocalstackContainerTes LockRegistryLeaderInitiator initiator = new LockRegistryLeaderInitiator(lockRepository, new DefaultCandidate("foo#" + i, "bar")); - initiator.setBusyWaitMillis(1000); + initiator.setBusyWaitMillis(100); initiator.setHeartBeatMillis(1000); initiator.setExecutorService( Executors.newSingleThreadExecutor(new CustomizableThreadFactory("lock-leadership-" + i + "-"))); @@ -144,7 +142,11 @@ class DynamoDbLockRegistryLeaderInitiatorTests implements LocalstackContainerTes assertThat(initiator2.getContext().isLeader()).isTrue(); assertThat(initiator1.getContext().isLeader()).isFalse(); - initiator1.setBusyWaitMillis(1000); + initiator1.setBusyWaitMillis(100); + // Interrupt the current selector and let it start with a new busy-wait period + initiator1.stop(); + initiator1.start(); + initiator2.setBusyWaitMillis(10000); initiator2.getContext().yield(); diff --git a/src/test/java/org/springframework/integration/aws/lock/DynamoDbLockRegistryTests.java b/src/test/java/org/springframework/integration/aws/lock/DynamoDbLockRegistryTests.java index d398ba4..0a1ad53 100644 --- a/src/test/java/org/springframework/integration/aws/lock/DynamoDbLockRegistryTests.java +++ b/src/test/java/org/springframework/integration/aws/lock/DynamoDbLockRegistryTests.java @@ -381,7 +381,7 @@ public class DynamoDbLockRegistryTests implements LocalstackContainerTest { @Bean public DynamoDbLockRegistry dynamoDbLockRegistry() { DynamoDbLockRegistry dynamoDbLockRegistry = new DynamoDbLockRegistry(dynamoDbLockRepository()); - dynamoDbLockRegistry.setIdleBetweenTries(Duration.ofMillis(10)); + dynamoDbLockRegistry.setIdleBetweenTries(Duration.ofMillis(100)); return dynamoDbLockRegistry; }