aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-02-14 10:04:54 +0100
committerHarald Musum <musum@yahooinc.com>2023-02-14 10:04:54 +0100
commitd4e3baa3a88eba1ebba6b350e0f7bafcf9eea9dc (patch)
treec01388031f5790157b2abfbd2ba9c95e73d72973
parent82c8ac8c8a7747a722916ec5afb2571614632ebb (diff)
Update test and fix bug in tester code where flag source was not used
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java5
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java17
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java3
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java2
4 files changed, 20 insertions, 7 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
index 9210a62ea5f..fa528ded54d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
@@ -42,6 +42,7 @@ import com.yahoo.vespa.config.server.zookeeper.SessionCounter;
import com.yahoo.vespa.config.server.zookeeper.ZKApplication;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.flags.FlagSource;
+import com.yahoo.vespa.flags.LongFlag;
import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.flags.UnboundStringFlag;
import com.yahoo.yolean.Exceptions;
@@ -125,6 +126,7 @@ public class SessionRepository {
private final ModelFactoryRegistry modelFactoryRegistry;
private final ConfigDefinitionRepo configDefinitionRepo;
private final int maxNodeSize;
+ private final LongFlag expiryTimeFlag;
public SessionRepository(TenantName tenantName,
TenantApplications applicationRepo,
@@ -166,6 +168,7 @@ public class SessionRepository {
this.modelFactoryRegistry = modelFactoryRegistry;
this.configDefinitionRepo = configDefinitionRepo;
this.maxNodeSize = maxNodeSize;
+ expiryTimeFlag = PermanentFlags.CONFIG_SERVER_SESSION_EXPIRY_TIME.bindTo(flagSource);
loadSessions(); // Needs to be done before creating cache below
this.directoryCache = curator.createDirectoryCache(sessionsPath.getAbsolute(), false, false, zkCacheExecutor);
@@ -354,7 +357,7 @@ public class SessionRepository {
}
public int deleteExpiredRemoteSessions(Clock clock) {
- Duration expiryTime = Duration.ofSeconds(PermanentFlags.CONFIG_SERVER_SESSION_EXPIRY_TIME.bindTo(flagSource).value());
+ Duration expiryTime = Duration.ofSeconds(expiryTimeFlag.value());
List<Long> remoteSessionsFromZooKeeper = getRemoteSessionsFromZooKeeper();
log.log(Level.FINE, () -> "Remote sessions for tenant " + tenantName + ": " + remoteSessionsFromZooKeeper);
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
index bfa1e7502e8..498940f8a63 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
@@ -51,6 +51,7 @@ import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.InMemoryFlagSource;
+import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.model.VespaModelFactory;
import org.junit.Before;
import org.junit.Rule;
@@ -104,6 +105,7 @@ public class ApplicationRepositoryTest {
private Curator curator;
private ConfigserverConfig configserverConfig;
private FileDirectory fileDirectory;
+ private InMemoryFlagSource flagSource;
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@@ -121,7 +123,7 @@ public class ApplicationRepositoryTest {
.configDefinitionsDir(temporaryFolder.newFolder().getAbsolutePath())
.fileReferencesDir(temporaryFolder.newFolder().getAbsolutePath())
.build();
- InMemoryFlagSource flagSource = new InMemoryFlagSource();
+ flagSource = new InMemoryFlagSource();
fileDirectory = new FileDirectory(configserverConfig);
tenantRepository = new TestTenantRepository.Builder()
.withClock(clock)
@@ -142,6 +144,7 @@ public class ApplicationRepositoryTest {
.withOrchestrator(orchestrator)
.withLogRetriever(new MockLogRetriever())
.withClock(clock)
+ .withFlagSource(flagSource)
.build();
timeoutBudget = new TimeoutBudget(clock, Duration.ofSeconds(60));
}
@@ -400,14 +403,20 @@ public class ApplicationRepositoryTest {
@Test
public void testDeletingInactiveSessions() throws IOException {
+ long sessionLifeTime = 60;
+ flagSource = flagSource.withLongFlag(PermanentFlags.CONFIG_SERVER_SESSION_EXPIRY_TIME.id(), sessionLifeTime * 2);
File serverdb = temporaryFolder.newFolder("serverdb");
- ConfigserverConfig configserverConfig =
+ configserverConfig =
new ConfigserverConfig(new ConfigserverConfig.Builder()
.configServerDBDir(serverdb.getAbsolutePath())
.configDefinitionsDir(temporaryFolder.newFolder("configdefinitions").getAbsolutePath())
.fileReferencesDir(temporaryFolder.newFolder("filedistribution").getAbsolutePath())
- .sessionLifetime(60));
- DeployTester tester = new DeployTester.Builder(temporaryFolder).configserverConfig(configserverConfig).clock(clock).build();
+ .sessionLifetime(sessionLifeTime));
+ DeployTester tester = new DeployTester.Builder(temporaryFolder)
+ .configserverConfig(configserverConfig)
+ .clock(clock)
+ .flagSource(flagSource)
+ .build();
tester.deployApp("src/test/apps/app"); // session 2 (numbering starts at 2)
clock.advance(Duration.ofSeconds(10));
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
index 62bb4a77916..ab527833803 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
@@ -293,7 +293,8 @@ public class DeployTester {
.withFileDistributionFactory(new MockFileDistributionFactory(configserverConfig))
.withMetrics(Optional.ofNullable(metrics).orElse(Metrics.createTestMetrics()))
.withModelFactoryRegistry((new ModelFactoryRegistry(modelFactories)))
- .withZone(zone);
+ .withZone(zone)
+ .withFlagSource(flagSource);
if (configserverConfig.hostedVespa()) builder.withHostProvisionerProvider(HostProvisionerProvider.withProvisioner(provisioner, true));
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
index f609b5558e9..384fa7a4177 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
@@ -324,7 +324,7 @@ public class PermanentFlags {
public static final UnboundLongFlag CONFIG_SERVER_SESSION_EXPIRY_TIME = defineLongFlag(
// TODO: Lower to 3600, which is default session expiry time
"config-server-session-expiry-time", 3600 * 2,
- "Expiry time for remote sessions (session in ZooKeeper). Default should be equal to session lifetime, " +
+ "Expiry time in seconds for remote sessions (session in ZooKeeper). Default should be equal to session lifetime, " +
"but can be lowered if there are incidents/bugs where one needs to delete sessions",
"Takes effect immediately",
ZONE_ID