diff options
6 files changed, 29 insertions, 35 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java index ab974090ee3..17e6db08068 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java @@ -284,17 +284,11 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye return currentActiveApplicationSet; } - public ConfigChangeActions prepare(Tenant tenant, - long sessionId, - DeployLogger logger, - PrepareParams params) { + public ConfigChangeActions prepare(Tenant tenant, long sessionId, DeployLogger logger, PrepareParams params) { LocalSession session = getLocalSession(tenant, sessionId); ApplicationId appId = params.getApplicationId(); Optional<ApplicationSet> currentActiveApplicationSet = getCurrentActiveApplicationSet(tenant, appId); - return session.prepare(logger, - params, - currentActiveApplicationSet, - tenant.getPath()); + return session.prepare(logger, params, currentActiveApplicationSet, tenant.getPath()); } private List<ApplicationId> listApplicationIds(Tenant tenant) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java index c27efb2caa2..81e52e0e129 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java @@ -98,7 +98,7 @@ public class Deployment implements com.yahoo.config.provision.Deployment { if (prepared) return; TimeoutBudget timeoutBudget = new TimeoutBudget(clock, timeout); session.prepare(logger, - /** Assumes that session has already set application id, see {@link com.yahoo.vespa.config.server.session.SessionFactoryImpl}. */ + /** Assumes that session has already set application id and version, see {@link com.yahoo.vespa.config.server.session.SessionFactoryImpl}. */ new PrepareParams.Builder().applicationId(session.getApplicationId()) .timeoutBudget(timeoutBudget) .ignoreValidationErrors( ! validate) diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java index 3890001518a..0b742b09cdd 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java @@ -48,6 +48,7 @@ public final class PrepareParams { } public static class Builder { + private boolean ignoreValidationErrors = false; private boolean dryRun = false; private ApplicationId applicationId = ApplicationId.defaultId(); 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 96c0f912fd4..fd18a2de997 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 @@ -87,18 +87,18 @@ public class SessionPreparer { */ public ConfigChangeActions prepare(SessionContext context, DeployLogger logger, PrepareParams params, Optional<ApplicationSet> currentActiveApplicationSet, Path tenantPath) { - Preparation prep = new Preparation(context, logger, params, currentActiveApplicationSet, tenantPath); - prep.preprocess(); + Preparation preparation = new Preparation(context, logger, params, currentActiveApplicationSet, tenantPath); + preparation.preprocess(); try { - prep.buildModels(); - prep.makeResult(); - if (!params.isDryRun()) { - prep.writeStateZK(); - prep.writeRotZK(); - prep.distribute(); - prep.reloadDeployFileDistributor(); + preparation.buildModels(); + preparation.makeResult(); + if ( ! params.isDryRun()) { + preparation.writeStateZK(); + preparation.writeRotZK(); + preparation.distribute(); + preparation.reloadDeployFileDistributor(); } - return prep.result(); + return preparation.result(); } catch (OutOfCapacityException e) { throw e; } catch (IllegalArgumentException e) { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java index 5f9e6134854..8612dbd607e 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java @@ -3,11 +3,9 @@ package com.yahoo.vespa.hosted.provision.persistence; import com.google.common.collect.ImmutableSet; import com.yahoo.component.Version; -import com.yahoo.component.Vtag; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.ClusterMembership; -import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.NodeFlavors; @@ -75,7 +73,6 @@ public class NodeSerializer { private static final String currentRestartGenerationKey = "currentRestartGeneration"; private static final String removableKey = "removable"; // Saved as part of allocation instead of serviceId, since serviceId serialized form is not easily extendable. - private static final String dockerImageKey = "dockerImage"; private static final String wantedVespaVersionKey = "wantedVespaVersion"; // History event fields @@ -168,8 +165,8 @@ public class NodeSerializer { private Status statusFromSlime(Inspector object) { return new Status(generationFromSlime(object, rebootGenerationKey, currentRebootGenerationKey), - softwareVersionFromSlime(object.field(vespaVersionKey)), - softwareVersionFromSlime(object.field(hostedVersionKey)), + versionFromSlime(object.field(vespaVersionKey)), + versionFromSlime(object.field(hostedVersionKey)), optionalString(object.field(stateVersionKey)), (int)object.field(failCountKey).asLong(), hardwareFailureFromSlime(object.field(hardwareFailureKey)), @@ -217,20 +214,12 @@ public class NodeSerializer { return new Generation(object.field(wantedField).asLong(), current.asLong()); } - // TODO: Simplify and inline after April 2017 private ClusterMembership clusterMembershipFromSlime(Inspector object) { - Optional<Version> vespaVersion; - if (object.field(dockerImageKey).valid()) { - vespaVersion = optionalString(object.field(dockerImageKey)) - .map(DockerImage::new) - .map(DockerImage::tagAsVersion); - } else { - vespaVersion = softwareVersionFromSlime(object.field(wantedVespaVersionKey)); - } - return ClusterMembership.from(object.field(serviceIdKey).asString(), vespaVersion.orElse(Vtag.currentVersion)); + return ClusterMembership.from(object.field(serviceIdKey).asString(), + versionFromSlime(object.field(wantedVespaVersionKey)).get()); } - private Optional<Version> softwareVersionFromSlime(Inspector object) { + private Optional<Version> versionFromSlime(Inspector object) { if ( ! object.valid()) return Optional.empty(); return Optional.of(Version.fromString(object.asString())); } diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java index d0a188c0760..deaf1070d45 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java @@ -265,6 +265,16 @@ public class EvaluationTestCase { tester.assertEvaluates("1.0", "sum(tensor0 * tensor1 + 0.5)", "{}", "{ {x:0}:1, {x:1}:1 }"); tester.assertEvaluates("0.0", "sum(tensor0 * tensor1 + 0.5)", "tensor(x{}):{}", "{ {x:0}:1, {x:1}:1 }"); + tester.assertEvaluates("1", + "reduce(join(tensor0, tensor1, f(x,y) (if(x > y, 1.0, 0.0))), sum, tag) == reduce(tensor0, count, tag)", + "tensor(tag{}):{{tag:tag1}:10, {tag:tag2}:20}", "{5}"); + tester.assertEvaluates("0", + "reduce(join(tensor0, tensor1, f(x,y) (if(x > y, 1.0, 0.0))), sum, tag) == reduce(tensor0, count, tag)", + "tensor(tag{}):{{tag:tag1}:10, {tag:tag2}:20}", "{15}"); + tester.assertEvaluates("0", + "reduce(join(tensor0, tensor1, f(x,y) (if(x > y, 1.0, 0.0))), sum, tag) == reduce(tensor0, count, tag)", + "tensor(tag{}):{{tag:tag1}:10, {tag:tag2}:20}", "{25}"); + // tensor result dimensions are given from argument dimensions, not the resulting values tester.assertEvaluates("tensor(x{}):{}", "tensor0 * tensor1", "{ {x:0}:1 }", "tensor(x{}):{ {x:1}:1 }"); tester.assertEvaluates("tensor(x{},y{}):{}", "tensor0 * tensor1", "{ {x:0}:1 }", "tensor(x{},y{}):{ {x:1,y:0}:1, {x:2,y:1}:1 }"); |