diff options
10 files changed, 44 insertions, 9 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java index c75174cd999..6d5804ab700 100644 --- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java +++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java @@ -51,6 +51,7 @@ public interface ModelContext { Set<Rotation> rotations(); boolean isBootstrap(); boolean isFirstTimeDeployment(); + boolean useDedicatedNodeForLogserver(); } } diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java index 53c70399e94..9d9a19bfbd6 100644 --- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java +++ b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java @@ -27,6 +27,8 @@ public class DeployProperties { private final Version vespaVersion; private final boolean isBootstrap; private final boolean isFirstTimeDeployment; + private final boolean useDedicatedNodeForLogserver; + private DeployProperties(boolean multitenant, ApplicationId applicationId, @@ -37,7 +39,8 @@ public class DeployProperties { String athenzDnsSuffix, Version vespaVersion, boolean isBootstrap, - boolean isFirstTimeDeployment) { + boolean isFirstTimeDeployment, + boolean useDedicatedNodeForLogserver) { this.loadBalancerName = loadBalancerName; this.ztsUrl = ztsUrl; this.athenzDnsSuffix = athenzDnsSuffix; @@ -48,6 +51,7 @@ public class DeployProperties { this.hostedVespa = hostedVespa; this.isBootstrap = isBootstrap; this.isFirstTimeDeployment = isFirstTimeDeployment; + this.useDedicatedNodeForLogserver = useDedicatedNodeForLogserver; } public boolean multitenant() { @@ -89,6 +93,8 @@ public class DeployProperties { /** Returns whether this is the first deployment for this application (used during *prepare*, not set on activate) */ public boolean isFirstTimeDeployment() { return isFirstTimeDeployment; } + public boolean useDedicatedNodeForLogserver() { return useDedicatedNodeForLogserver; } + public static class Builder { private ApplicationId applicationId = ApplicationId.defaultId(); @@ -101,6 +107,7 @@ public class DeployProperties { private Version vespaVersion = Version.fromIntValues(1, 0, 0); private boolean isBootstrap = false; private boolean isFirstTimeDeployment = false; + private boolean useDedicatedNodeForLogserver = false; public Builder applicationId(ApplicationId applicationId) { this.applicationId = applicationId; @@ -152,9 +159,15 @@ public class DeployProperties { return this; } + public Builder useDedicatedNodeForLogserver(boolean useDedicatedNodeForLogserver) { + this.useDedicatedNodeForLogserver = useDedicatedNodeForLogserver; + return this; + } + public DeployProperties build() { return new DeployProperties(multitenant, applicationId, configServerSpecs, loadBalancerName, hostedVespa, - ztsUrl, athenzDnsSuffix, vespaVersion, isBootstrap, isFirstTimeDeployment); + ztsUrl, athenzDnsSuffix, vespaVersion, isBootstrap, isFirstTimeDeployment, + useDedicatedNodeForLogserver); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java index ea943f069cb..566ad0ecff5 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom; import com.yahoo.config.model.ConfigModelContext; import com.yahoo.config.model.api.ConfigServerSpec; +import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.SystemName; @@ -93,9 +94,12 @@ public class DomAdminV4Builder extends DomAdminBuilderBase { private NodesSpecification createNodesSpecificationForLogserver() { // TODO: Enable for main system as well - //if (context.getDeployState().isHosted() && context.getDeployState().zone().system() == SystemName.cd) - // return NodesSpecification.dedicated(1, context); - //else + DeployState deployState = context.getDeployState(); + if (deployState.getProperties().useDedicatedNodeForLogserver() && + deployState.isHosted() && + deployState.zone().system() == SystemName.cd) + return NodesSpecification.dedicated(1, context); + else return NodesSpecification.nonDedicated(1, context); } diff --git a/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java b/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java index 5bd95334396..948c62c2343 100644 --- a/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java +++ b/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java @@ -133,6 +133,9 @@ public class MockModelContext implements ModelContext { @Override public boolean isFirstTimeDeployment() { return false; } + + @Override + public boolean useDedicatedNodeForLogserver() { return false; } }; } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java b/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java index 094494073df..e4198115b2a 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java @@ -216,6 +216,9 @@ public class VespaModelFactoryTest { @Override public boolean isFirstTimeDeployment() { return false; } + + @Override + public boolean useDedicatedNodeForLogserver() { return false; } }; } }; diff --git a/configdefinitions/src/vespa/configserver.def b/configdefinitions/src/vespa/configserver.def index c90709bf4dd..0e32540ec83 100644 --- a/configdefinitions/src/vespa/configserver.def +++ b/configdefinitions/src/vespa/configserver.def @@ -68,3 +68,4 @@ sleepTimeWhenRedeployingFails long default=30 # Feature Flags (poor man's feature flags, to be overridden in configserver-config.xml if needed) deleteApplicationLegacy bool default=false buildMinimalSetOfConfigModels bool default=true +useDedicatedNodeForLogserver bool default=false diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java index 914d6963ff0..acf49fe51be 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java @@ -125,6 +125,7 @@ public class ModelContextImpl implements ModelContext { private final Set<Rotation> rotations; private final boolean isBootstrap; private final boolean isFirstTimeDeployment; + private final boolean useDedicatedNodeForLogserver; public Properties(ApplicationId applicationId, boolean multitenant, @@ -136,7 +137,8 @@ public class ModelContextImpl implements ModelContext { Zone zone, Set<Rotation> rotations, boolean isBootstrap, - boolean isFirstTimeDeployment) { + boolean isFirstTimeDeployment, + boolean useDedicatedNodeForLogserver) { this.applicationId = applicationId; this.multitenant = multitenant; this.configServerSpecs = configServerSpecs; @@ -148,6 +150,7 @@ public class ModelContextImpl implements ModelContext { this.rotations = rotations; this.isBootstrap = isBootstrap; this.isFirstTimeDeployment = isFirstTimeDeployment; + this.useDedicatedNodeForLogserver = useDedicatedNodeForLogserver; } @Override @@ -186,6 +189,9 @@ public class ModelContextImpl implements ModelContext { @Override public boolean isFirstTimeDeployment() { return isFirstTimeDeployment; } + + @Override + public boolean useDedicatedNodeForLogserver() { return useDedicatedNodeForLogserver; } } } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java index c18d3c7fe48..0ebb83f5cd1 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java @@ -115,7 +115,8 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> { zone(), new Rotations(curator, TenantRepository.getTenantPath(tenant)).readRotationsFromZooKeeper(applicationId), false, // We may be bootstrapping, but we only know and care during prepare - false); // Always false, assume no one uses it when activating + false, // Always false, assume no one uses it when activating + configserverConfig.useDedicatedNodeForLogserver()); } } 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 49287669a06..4edde0904a4 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 @@ -159,7 +159,8 @@ public class SessionPreparer { zone, rotationsSet, params.isBootstrap(), - ! currentActiveApplicationSet.isPresent()); + ! currentActiveApplicationSet.isPresent(), + configserverConfig.useDedicatedNodeForLogserver()); this.preparedModelsBuilder = new PreparedModelsBuilder(modelFactoryRegistry, permanentApplicationPackage, configDefinitionRepo, diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java index 28fc179770a..43425aec13b 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java @@ -24,7 +24,7 @@ import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; /** - * @author lulf + * @author Ulf Lilleengen */ public class ModelContextImplTest { @Test @@ -52,6 +52,7 @@ public class ModelContextImplTest { Zone.defaultZone(), rotations, false, + false, false), Optional.empty(), new Version(6), @@ -69,5 +70,6 @@ public class ModelContextImplTest { assertFalse(context.properties().hostedVespa()); assertThat(context.properties().rotations(), equalTo(rotations)); assertThat(context.properties().isFirstTimeDeployment(), equalTo(false)); + assertThat(context.properties().useDedicatedNodeForLogserver(), equalTo(false)); } } |