diff options
Diffstat (limited to 'config-model/src/main/java/com')
5 files changed, 7 insertions, 29 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java index 647745eba5d..f19341098f4 100644 --- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java +++ b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java @@ -27,7 +27,6 @@ import com.yahoo.config.model.application.provider.MockFileRegistry; import com.yahoo.config.model.provision.HostsXmlProvisioner; import com.yahoo.config.model.provision.SingleNodeProvisioner; import com.yahoo.config.model.test.MockApplicationPackage; -import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Zone; import com.yahoo.io.IOUtils; @@ -93,7 +92,6 @@ public class DeployState implements ConfigDefinitionStore { private final Reindexing reindexing; private final ExecutorService executor; private final OnnxModelCost onnxModelCost; - private final Set<ClusterSpec.Id> restartingClusters; public static DeployState createTestState() { return new Builder().build(); @@ -129,8 +127,7 @@ public class DeployState implements ConfigDefinitionStore { Optional<DockerImage> wantedDockerImageRepo, Reindexing reindexing, Optional<ValidationOverrides> validationOverrides, - OnnxModelCost onnxModelCost, - Set<ClusterSpec.Id> restartingClusters) { + OnnxModelCost onnxModelCost) { this.logger = deployLogger; this.fileRegistry = fileRegistry; this.executor = executor; @@ -159,7 +156,6 @@ public class DeployState implements ConfigDefinitionStore { this.wantedDockerImageRepo = wantedDockerImageRepo; this.reindexing = reindexing; this.onnxModelCost = onnxModelCost; - this.restartingClusters = Set.copyOf(restartingClusters); } public static HostProvisioner getDefaultModelHostProvisioner(ApplicationPackage applicationPackage) { @@ -315,8 +311,6 @@ public class DeployState implements ConfigDefinitionStore { public OnnxModelCost onnxModelCost() { return onnxModelCost; } - public Set<ClusterSpec.Id> restartingClusters() { return restartingClusters; } - public boolean isHostedTenantApplication(ApplicationType type) { boolean isTesterApplication = getProperties().applicationId().instance().isTester(); return isHosted() && type == ApplicationType.DEFAULT && !isTesterApplication; @@ -346,7 +340,6 @@ public class DeployState implements ConfigDefinitionStore { private Reindexing reindexing = null; private Optional<ValidationOverrides> validationOverrides = Optional.empty(); private OnnxModelCost onnxModelCost = OnnxModelCost.disabled(); - private Set<ClusterSpec.Id> restartingClusters = Set.of(); public Builder() {} @@ -466,11 +459,6 @@ public class DeployState implements ConfigDefinitionStore { public Builder onnxModelCost(OnnxModelCost instance) { this.onnxModelCost = instance; return this; } - public Builder restartingClusters(Set<ClusterSpec.Id> restartingClusters) { - this.restartingClusters = Set.copyOf(restartingClusters); - return this; - } - public DeployState build() { return build(new ValidationParameters()); } @@ -504,8 +492,7 @@ public class DeployState implements ConfigDefinitionStore { wantedDockerImageRepo, reindexing, validationOverrides, - onnxModelCost, - restartingClusters); + onnxModelCost); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java index 1b9d4004b5d..65572d07cc2 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java @@ -198,8 +198,7 @@ public class VespaModelFactory implements ModelFactory { .now(clock.instant()) .wantedNodeVespaVersion(modelContext.wantedNodeVespaVersion()) .wantedDockerImageRepo(modelContext.wantedDockerImageRepo()) - .onnxModelCost(modelContext.onnxModelCost()) - .restartingClusters(modelContext.restartingClusters()); + .onnxModelCost(modelContext.onnxModelCost()); modelContext.previousModel().ifPresent(builder::previousModel); modelContext.reindexing().ifPresent(builder::reindexing); return builder.build(validationParameters); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/JvmHeapSizeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/JvmHeapSizeValidator.java index 482c4477cdc..9cf5fe84c21 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/JvmHeapSizeValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/JvmHeapSizeValidator.java @@ -18,7 +18,6 @@ public class JvmHeapSizeValidator implements Validator { @Override public void validate(Context context) { - if (!context.deployState().featureFlags().dynamicHeapSize()) return; if (!context.deployState().isHostedTenantApplication(context.model().getAdmin().getApplicationType())) return; context.model().getContainerClusters().forEach((clusterId, appCluster) -> { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java index 3fc194a505e..ed7646b3066 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java @@ -50,7 +50,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Optional; import java.util.Set; -import java.util.logging.Level; import java.util.stream.Collectors; import static com.yahoo.vespa.model.container.docproc.DocprocChains.DOCUMENT_TYPE_MANAGER_CLASS; @@ -102,7 +101,6 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat private int zookeeperSessionTimeoutSeconds = 30; private final int transport_events_before_wakeup; private final int transport_connections_per_target; - private final boolean dynamicHeapSize; /** The heap size % of total memory available to the JVM process. */ private final int heapSizePercentageOfAvailableMemory; @@ -116,7 +114,6 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat public ApplicationContainerCluster(TreeConfigProducer<?> parent, String configSubId, String clusterId, DeployState deployState) { super(parent, configSubId, clusterId, deployState, true, 10); this.tlsClientAuthority = deployState.tlsClientAuthority(); - dynamicHeapSize = deployState.featureFlags().dynamicHeapSize(); previousHosts = Collections.unmodifiableSet(deployState.getPreviousModel().stream() .map(Model::allocatedHosts) .map(AllocatedHosts::getHosts) @@ -154,10 +151,8 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat registerApplicationBundles(deployState); registerUserConfiguredFiles(deployState); createEndpoints(deployState); - if (onnxModelCostCalculator.restartOnDeploy() || deployState.restartingClusters().contains(id())) { - deployState.getDeployLogger().log(Level.INFO, "Deferring config change until restart for cluster '" + id() + "'"); + if (onnxModelCostCalculator.restartOnDeploy()) setDeferChangesUntilRestart(true); - } } private void registerApplicationBundles(DeployState deployState) { @@ -218,10 +213,8 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat if (getContainers().isEmpty()) return Optional.of(JvmMemoryPercentage.of(availableMemoryPercentage)); // Node memory is not known // Node memory is known so convert available memory percentage to node memory percentage - double totalMemory = dynamicHeapSize - ? getContainers().stream().mapToDouble(c -> c.getHostResource().realResources().memoryGb()).min().orElseThrow() - : getContainers().get(0).getHostResource().realResources().memoryGb(); - double jvmHeapDeductionGb = dynamicHeapSize ? onnxModelCostCalculator.aggregatedModelCostInBytes() / (1024D * 1024 * 1024) : 0; + double totalMemory = getContainers().stream().mapToDouble(c -> c.getHostResource().realResources().memoryGb()).min().orElseThrow(); + double jvmHeapDeductionGb = onnxModelCostCalculator.aggregatedModelCostInBytes() / (1024D * 1024 * 1024); double availableMemory = Math.max(0, totalMemory - Host.memoryOverheadGb - jvmHeapDeductionGb); int memoryPercentage = (int) (availableMemory / totalMemory * availableMemoryPercentage); logger.log(FINE, () -> "cluster id '%s': memoryPercentage=%d, availableMemory=%f, totalMemory=%f, availableMemoryPercentage=%d, jvmHeapDeductionGb=%f" diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java index 799e0bd62e8..aeb6c030a49 100755 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java @@ -166,7 +166,7 @@ public abstract class ContainerCluster<CONTAINER extends Container> private String hostClusterId = null; private String jvmGCOptions = null; - private boolean deferChangesUntilRestart = false; + private volatile boolean deferChangesUntilRestart = false; private boolean clientsLegacyMode; private List<Client> clients = List.of(); |