diff options
author | Harald Musum <musum@yahooinc.com> | 2023-02-14 10:04:54 +0100 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2023-02-14 10:04:54 +0100 |
commit | d4e3baa3a88eba1ebba6b350e0f7bafcf9eea9dc (patch) | |
tree | c01388031f5790157b2abfbd2ba9c95e73d72973 | |
parent | 82c8ac8c8a7747a722916ec5afb2571614632ebb (diff) |
Update test and fix bug in tester code where flag source was not used
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 |