diff options
Diffstat (limited to 'configserver')
4 files changed, 9 insertions, 41 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java index b8093f52ebc..a57bfeda12e 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java @@ -85,6 +85,8 @@ public abstract class Session { } void setApplicationPackageReference(FileReference applicationPackageReference) { + if (applicationPackageReference == null) throw new IllegalArgumentException(String.format( + "Null application package FileReference for tenant: %s, session: %d", tenant, sessionId)); zooKeeperClient.writeApplicationPackageReference(applicationPackageReference); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactoryImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactoryImpl.java index 658b0513043..5397ad30fdc 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactoryImpl.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactoryImpl.java @@ -134,7 +134,9 @@ public class SessionFactoryImpl implements SessionFactory, LocalSessionLoader { LocalSession session = create(existingApp, existingApplicationId, activeSessionId, internalRedeploy, timeoutBudget); // Note: Needs to be kept in sync with calls in SessionPreparer.writeStateToZooKeeper() session.setApplicationId(existingApplicationId); - if (distributeApplicationPackage.value()) session.setApplicationPackageReference(existingSession.getApplicationPackageReference()); + if (distributeApplicationPackage.value() && existingSession.getApplicationPackageReference() != null) { + session.setApplicationPackageReference(existingSession.getApplicationPackageReference()); + } session.setVespaVersion(existingSession.getVespaVersion()); session.setDockerImageRepository(existingSession.getDockerImageRepository()); session.setAthenzDomain(existingSession.getAthenzDomain()); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java index 0211b00e128..e6dbae5a421 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java @@ -44,7 +44,6 @@ import com.yahoo.vespa.config.server.tenant.EndpointCertificateMetadataStore; import com.yahoo.vespa.config.server.tenant.EndpointCertificateRetriever; import com.yahoo.vespa.curator.Curator; import com.yahoo.vespa.flags.BooleanFlag; -import com.yahoo.vespa.flags.FetchVector; import com.yahoo.vespa.flags.FlagSource; import com.yahoo.vespa.flags.Flags; import org.xml.sax.SAXException; @@ -81,7 +80,6 @@ public class SessionPreparer { private final Zone zone; private final SecretStore secretStore; private final BooleanFlag distributeApplicationPackage; - private final BooleanFlag unsetEndpoints; @Inject public SessionPreparer(ModelFactoryRegistry modelFactoryRegistry, @@ -104,7 +102,6 @@ public class SessionPreparer { this.zone = zone; this.secretStore = secretStore; this.distributeApplicationPackage = Flags.CONFIGSERVER_DISTRIBUTE_APPLICATION_PACKAGE.bindTo(flagSource); - this.unsetEndpoints = Flags.CONFIGSERVER_UNSET_ENDPOINTS.bindTo(flagSource); } /** @@ -120,10 +117,7 @@ public class SessionPreparer { public ConfigChangeActions prepare(SessionContext context, DeployLogger logger, PrepareParams params, Optional<ApplicationSet> currentActiveApplicationSet, Path tenantPath, Instant now) { - boolean allowUnsettingEndpoints = unsetEndpoints.with(FetchVector.Dimension.APPLICATION_ID, params.getApplicationId().serializedForm()) - .value(); - Preparation preparation = new Preparation(context, logger, params, currentActiveApplicationSet, tenantPath, - allowUnsettingEndpoints); + Preparation preparation = new Preparation(context, logger, params, currentActiveApplicationSet, tenantPath); // Note: Done before pre-processing, requires that to be done by users of the distributed package var distributedApplicationPackage = preparation.distributeApplicationPackage(); @@ -135,11 +129,7 @@ public class SessionPreparer { if ( ! params.isDryRun()) { preparation.writeStateZK(distributedApplicationPackage); preparation.writeEndpointCertificateMetadataZK(); - if (allowUnsettingEndpoints) { - preparation.writeContainerEndpointsZK(); - } else { - preparation.legacyWriteContainerEndpointsZK(); - } + preparation.writeContainerEndpointsZK(); preparation.writeApplicationRoles(); preparation.distribute(); } @@ -187,8 +177,7 @@ public class SessionPreparer { private final FileDistributionProvider fileDistributionProvider; Preparation(SessionContext context, DeployLogger logger, PrepareParams params, - Optional<ApplicationSet> currentActiveApplicationSet, Path tenantPath, - boolean allowUnsettingEndpoints) { + Optional<ApplicationSet> currentActiveApplicationSet, Path tenantPath) { this.context = context; this.logger = logger; this.params = params; @@ -205,11 +194,7 @@ public class SessionPreparer { endpointCertificateSecrets = endpointCertificateMetadata .or(() -> endpointCertificateMetadataStore.readEndpointCertificateMetadata(applicationId)) .flatMap(endpointCertificateRetriever::readEndpointCertificateSecrets); - if (allowUnsettingEndpoints) { - this.containerEndpoints = readEndpointsIfNull(params.containerEndpoints()); - } else { - this.containerEndpoints = getEndpoints(params.containerEndpoints()); - } + this.containerEndpoints = readEndpointsIfNull(params.containerEndpoints()); this.athenzDomain = params.athenzDomain(); this.applicationRolesStore = new ApplicationRolesStore(curator, tenantPath); this.applicationRoles = params.applicationRoles() @@ -311,12 +296,6 @@ public class SessionPreparer { checkTimeout("write container endpoints to zookeeper"); } - void legacyWriteContainerEndpointsZK() { - if (!containerEndpoints.isEmpty()) { - writeContainerEndpointsZK(); - } - } - void writeApplicationRoles() { applicationRoles.ifPresent(roles -> applicationRolesStore.writeApplicationRoles(applicationId, roles)); @@ -340,12 +319,6 @@ public class SessionPreparer { return List.copyOf(endpoints); } - private List<ContainerEndpoint> getEndpoints(List<ContainerEndpoint> endpoints) { - if (endpoints == null || endpoints.isEmpty()) { - endpoints = this.containerEndpointsCache.read(applicationId); - } - return List.copyOf(endpoints); - } } private void writeStateToZooKeeper(SessionZooKeeperClient zooKeeperClient, diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java index 7a2b10e88c8..d55bb35bfde 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java @@ -252,15 +252,6 @@ public class SessionPreparerTest { params = new PrepareParams.Builder().applicationId(applicationId).containerEndpoints("[]").build(); prepare(new File("src/test/resources/deploy/hosted-app"), params); assertEquals(List.of(), readContainerEndpoints(applicationId)); - - // Preparing with empty container endpoints keeps old value with feature flag turned off - params = new PrepareParams.Builder().applicationId(applicationId).containerEndpoints(endpoints).build(); - prepare(new File("src/test/resources/deploy/hosted-app"), params); - assertEquals(expected, readContainerEndpoints(applicationId)); - flagSource.withBooleanFlag(Flags.CONFIGSERVER_UNSET_ENDPOINTS.id(), false); - params = new PrepareParams.Builder().applicationId(applicationId).containerEndpoints("[]").build(); - prepare(new File("src/test/resources/deploy/hosted-app"), params); - assertEquals(expected, readContainerEndpoints(applicationId)); } @Test |