Some tweaks around locks and their tests

This commit is contained in:
abilan
2023-03-15 09:42:29 -04:00
parent 2947ce496e
commit f13ef11798
4 changed files with 8 additions and 10 deletions

View File

@@ -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<String, DynamoDbLock> locks = new ConcurrentHashMap<>();

View File

@@ -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<String> heldLocks = Collections.synchronizedSet(new HashSet<>());

View File

@@ -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();

View File

@@ -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;
}