summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-04-16 09:29:34 +0200
committerGitHub <noreply@github.com>2018-04-16 09:29:34 +0200
commit29af0ab72a3943f3ab198d6ebd4f82d680ac2358 (patch)
treeb999ba029cb1c0f85ab7819e51992b806ed1bdc8
parent996336f9b80dbc5b18932ef830332421d42951a0 (diff)
parenta0eda47c21c82a9cd2feec38e17c373350b270ab (diff)
Merge pull request #5556 from vespa-engine/mpolden/remove-controllerdb
Move all controller persistence to ZooKeeper
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java21
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java26
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/TenantController.java55
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerDb.java68
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerDbProxy.java95
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java4
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/MemoryControllerDb.java83
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/PersistenceException.java19
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java25
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java1
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java2
11 files changed, 47 insertions, 352 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
index 9ccfdd3642e..800eb447bc7 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
@@ -43,7 +43,6 @@ import com.yahoo.vespa.hosted.controller.application.Deployment;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTrigger;
import com.yahoo.vespa.hosted.controller.maintenance.DeploymentExpirer;
-import com.yahoo.vespa.hosted.controller.persistence.ControllerDb;
import com.yahoo.vespa.hosted.controller.persistence.CuratorDb;
import com.yahoo.vespa.hosted.controller.rotation.Rotation;
import com.yahoo.vespa.hosted.controller.rotation.RotationLock;
@@ -82,10 +81,7 @@ public class ApplicationController {
/** The controller owning this */
private final Controller controller;
- /** For permanent storage */
- private final ControllerDb db;
-
- /** For working memory storage and sharing between controllers */
+ /** For persistence */
private final CuratorDb curator;
private final ArtifactRepository artifactRepository;
@@ -98,13 +94,12 @@ public class ApplicationController {
private final DeploymentTrigger deploymentTrigger;
- ApplicationController(Controller controller, ControllerDb db, CuratorDb curator,
+ ApplicationController(Controller controller, CuratorDb curator,
AthenzClientFactory zmsClientFactory, RotationsConfig rotationsConfig,
NameService nameService, ConfigServerClient configServer,
ArtifactRepository artifactRepository,
RoutingGenerator routingGenerator, BuildService buildService, Clock clock) {
this.controller = controller;
- this.db = db;
this.curator = curator;
this.zmsClientFactory = zmsClientFactory;
this.nameService = nameService;
@@ -116,14 +111,14 @@ public class ApplicationController {
this.rotationRepository = new RotationRepository(rotationsConfig, this, curator);
this.deploymentTrigger = new DeploymentTrigger(controller, curator, buildService, clock);
- for (Application application : db.listApplications()) {
+ for (Application application : curator.readApplications()) {
lockIfPresent(application.id(), this::store);
}
}
/** Returns the application with the given id, or null if it is not present */
public Optional<Application> get(ApplicationId id) {
- return db.getApplication(id);
+ return curator.readApplication(id);
}
/**
@@ -137,12 +132,12 @@ public class ApplicationController {
/** Returns a snapshot of all applications */
public List<Application> asList() {
- return sort(db.listApplications());
+ return sort(curator.readApplications());
}
/** Returns all applications of a tenant */
public List<Application> asList(TenantName tenant) {
- return sort(db.listApplications(tenant));
+ return sort(curator.readApplications(tenant));
}
/**
@@ -499,7 +494,7 @@ public class ApplicationController {
.deleteApplication(((AthenzTenant) tenant).domain(),
new com.yahoo.vespa.hosted.controller.api.identifiers.ApplicationId(id.application().value()));
}
- db.deleteApplication(id);
+ curator.removeApplication(id);
log.info("Deleted " + application);
}));
@@ -511,7 +506,7 @@ public class ApplicationController {
* @param application a locked application to store
*/
public void store(LockedApplication application) {
- db.store(application);
+ curator.writeApplication(application);
}
/**
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java
index b99a7ec1fcd..adc082ab5eb 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java
@@ -26,8 +26,6 @@ import com.yahoo.vespa.hosted.controller.api.integration.routing.GlobalRoutingSe
import com.yahoo.vespa.hosted.controller.api.integration.routing.RotationStatus;
import com.yahoo.vespa.hosted.controller.api.integration.routing.RoutingGenerator;
import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneRegistry;
-import com.yahoo.vespa.hosted.controller.persistence.ControllerDb;
-import com.yahoo.vespa.hosted.controller.persistence.ControllerDbProxy;
import com.yahoo.vespa.hosted.controller.persistence.CuratorDb;
import com.yahoo.vespa.hosted.controller.rotation.Rotation;
import com.yahoo.vespa.hosted.controller.versions.VersionStatus;
@@ -45,15 +43,12 @@ import java.util.function.Predicate;
import java.util.logging.Logger;
/**
- * API to the controller. This contains (currently: should contain) the object model of everything the
- * controller cares about, mainly tenants and applications.
- *
- * As the controller runtime and Controller object are singletons, this instance can read from the object model
- * in memory. However, all changes to the object model must be persisted in the controller db.
+ * API to the controller. This contains the object model of everything the controller cares about, mainly tenants and
+ * applications. The object model is persisted to curator.
*
* All the individual model objects reachable from the Controller are immutable.
*
- * Access to the controller is multithread safe, provided the locking methods are
+ * Access to the controller is multi-thread safe, provided the locking methods are
* used when accessing, modifying and storing objects provided by the controller.
*
* @author bratseth
@@ -80,24 +75,23 @@ public class Controller extends AbstractComponent {
/**
* Creates a controller
*
- * @param db the db storing persistent state
- * @param curator the curator instance storing working state shared between controller instances
+ * @param curator the curator instance storing the persistent state of the controller.
*/
@Inject
- public Controller(ControllerDb db, CuratorDb curator, RotationsConfig rotationsConfig,
+ public Controller(CuratorDb curator, RotationsConfig rotationsConfig,
GitHub gitHub, EntityService entityService, Organization organization,
GlobalRoutingService globalRoutingService,
ZoneRegistry zoneRegistry, ConfigServerClient configServer, NodeRepositoryClientInterface nodeRepository,
MetricsService metricsService, NameService nameService,
RoutingGenerator routingGenerator, Chef chef, AthenzClientFactory athenzClientFactory,
ArtifactRepository artifactRepository, BuildService buildService) {
- this(db, curator, rotationsConfig,
+ this(curator, rotationsConfig,
gitHub, entityService, organization, globalRoutingService, zoneRegistry,
configServer, nodeRepository, metricsService, nameService, routingGenerator, chef,
Clock.systemUTC(), athenzClientFactory, artifactRepository, buildService);
}
- public Controller(ControllerDb db, CuratorDb curator, RotationsConfig rotationsConfig,
+ public Controller(CuratorDb curator, RotationsConfig rotationsConfig,
GitHub gitHub, EntityService entityService, Organization organization,
GlobalRoutingService globalRoutingService,
ZoneRegistry zoneRegistry, ConfigServerClient configServer, NodeRepositoryClientInterface nodeRepository,
@@ -119,9 +113,7 @@ public class Controller extends AbstractComponent {
this.clock = Objects.requireNonNull(clock, "Clock cannot be null");
this.athenzClientFactory = Objects.requireNonNull(athenzClientFactory, "AthenzClientFactory cannot be null");
- ControllerDbProxy dbProxy = new ControllerDbProxy(Objects.requireNonNull(db, "Controller db cannot be null"),
- curator);
- applicationController = new ApplicationController(this, dbProxy, curator, athenzClientFactory,
+ applicationController = new ApplicationController(this, curator, athenzClientFactory,
Objects.requireNonNull(rotationsConfig, "RotationsConfig cannot be null"),
Objects.requireNonNull(nameService, "NameService cannot be null"),
configServer,
@@ -129,7 +121,7 @@ public class Controller extends AbstractComponent {
Objects.requireNonNull(routingGenerator, "RoutingGenerator cannot be null"),
Objects.requireNonNull(buildService, "BuildService cannot be null"),
clock);
- tenantController = new TenantController(this, dbProxy, curator, athenzClientFactory);
+ tenantController = new TenantController(this, curator, athenzClientFactory);
}
/** Returns the instance controlling tenants */
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/TenantController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/TenantController.java
index ae73f964b1c..2e8fe795fb5 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/TenantController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/TenantController.java
@@ -9,12 +9,10 @@ import com.yahoo.vespa.curator.Lock;
import com.yahoo.vespa.hosted.controller.api.identifiers.UserId;
import com.yahoo.vespa.hosted.controller.api.integration.athenz.AthenzClientFactory;
import com.yahoo.vespa.hosted.controller.api.integration.athenz.ZmsClient;
+import com.yahoo.vespa.hosted.controller.persistence.CuratorDb;
import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import com.yahoo.vespa.hosted.controller.tenant.UserTenant;
-import com.yahoo.vespa.hosted.controller.persistence.ControllerDb;
-import com.yahoo.vespa.hosted.controller.persistence.CuratorDb;
-import com.yahoo.vespa.hosted.controller.persistence.PersistenceException;
import java.time.Duration;
import java.util.Comparator;
@@ -38,22 +36,17 @@ public class TenantController {
/** The controller owning this */
private final Controller controller;
- /** For permanent storage */
- private final ControllerDb db;
-
- /** For working memory storage and sharing between controllers */
+ /** For persistence */
private final CuratorDb curator;
private final AthenzClientFactory athenzClientFactory;
- public TenantController(Controller controller, ControllerDb db, CuratorDb curator,
- AthenzClientFactory athenzClientFactory) {
+ public TenantController(Controller controller, CuratorDb curator, AthenzClientFactory athenzClientFactory) {
this.controller = controller;
- this.db = db;
this.curator = curator;
this.athenzClientFactory = athenzClientFactory;
// Write all tenants to ensure persisted data uses latest serialization format
- for (Tenant tenant : db.listTenants()) {
+ for (Tenant tenant : curator.readTenants()) {
try (Lock lock = lock(tenant.name())) {
if (tenant instanceof AthenzTenant) {
curator.writeTenant((AthenzTenant) tenant);
@@ -68,9 +61,9 @@ public class TenantController {
/** Returns a list of all known tenants sorted by name */
public List<Tenant> asList() {
- return db.listTenants().stream()
- .sorted(Comparator.comparing(Tenant::name))
- .collect(Collectors.toList());
+ return curator.readTenants().stream()
+ .sorted(Comparator.comparing(Tenant::name))
+ .collect(Collectors.toList());
}
/** Returns a list of all tenants accessible by the given user */
@@ -88,7 +81,7 @@ public class TenantController {
public void create(UserTenant tenant) {
try (Lock lock = lock(tenant.name())) {
requireNonExistent(tenant.name());
- db.createTenant(tenant);
+ curator.writeTenant(tenant);
log.info("Created " + tenant);
}
}
@@ -107,7 +100,7 @@ public class TenantController {
"'");
}
athenzClientFactory.createZmsClientWithAuthorizedServiceToken(token).createTenant(domain);
- db.createTenant(tenant);
+ curator.writeTenant(tenant);
log.info("Created " + tenant);
}
}
@@ -121,11 +114,7 @@ public class TenantController {
/** Find tenant by name */
public Optional<Tenant> tenant(TenantName name) {
- try {
- return db.getTenant(name);
- } catch (PersistenceException e) {
- throw new RuntimeException(e);
- }
+ return curator.readTenant(name);
}
/** Find tenant by name */
@@ -135,11 +124,7 @@ public class TenantController {
/** Find Athenz tenant by name */
public Optional<AthenzTenant> athenzTenant(TenantName name) {
- try {
- return db.getAthenzTenant(name);
- } catch (PersistenceException e) {
- throw new RuntimeException(e);
- }
+ return curator.readAthenzTenant(name);
}
/** Update Athenz tenant */
@@ -147,10 +132,8 @@ public class TenantController {
try (Lock lock = lock(updatedTenant.name())) {
requireExists(updatedTenant.name());
updateAthenzDomain(updatedTenant, token);
- db.updateTenant(updatedTenant);
+ curator.writeTenant(updatedTenant);
log.info("Updated " + updatedTenant);
- } catch (PersistenceException e) {
- throw new RuntimeException(e);
}
}
@@ -170,16 +153,12 @@ public class TenantController {
}
private void deleteTenant(TenantName name) {
- try {
- if ( ! controller.applications().asList(name).isEmpty()) {
- throw new IllegalArgumentException("Could not delete tenant '" + name.value()
- + "': This tenant has active applications");
- }
- db.deleteTenant(name);
- log.info("Deleted " + name);
- } catch (PersistenceException e) {
- throw new RuntimeException(e);
+ if (!controller.applications().asList(name).isEmpty()) {
+ throw new IllegalArgumentException("Could not delete tenant '" + name.value()
+ + "': This tenant has active applications");
}
+ curator.removeTenant(name);
+ log.info("Deleted " + name);
}
private void updateAthenzDomain(AthenzTenant updatedTenant, NToken token) {
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerDb.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerDb.java
deleted file mode 100644
index c2078aa48b6..00000000000
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerDb.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.persistence;
-
-import com.google.common.base.Joiner;
-import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.TenantName;
-import com.yahoo.vespa.hosted.controller.Application;
-import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
-import com.yahoo.vespa.hosted.controller.tenant.Tenant;
-import com.yahoo.vespa.hosted.controller.tenant.UserTenant;
-
-import java.util.List;
-import java.util.Optional;
-
-/**
- * Used to store the permanent data of the controller.
- *
- * @author Stian Kristoffersen
- * @author bratseth
- */
-public interface ControllerDb {
-
- // --------- Tenants
-
- void createTenant(UserTenant tenant);
-
- void createTenant(AthenzTenant tenant);
-
- // TODO: Remove exception from all signatures
- void updateTenant(AthenzTenant tenant) throws PersistenceException;
-
- void deleteTenant(TenantName name) throws PersistenceException;
-
- Optional<Tenant> getTenant(TenantName name) throws PersistenceException;
-
- Optional<AthenzTenant> getAthenzTenant(TenantName name) throws PersistenceException;
-
- List<Tenant> listTenants();
-
- // --------- Applications
-
- // ONLY call this from ApplicationController.store()
- void store(Application application);
-
- void deleteApplication(ApplicationId applicationId);
-
- Optional<Application> getApplication(ApplicationId applicationId);
-
- /** Returns all applications */
- List<Application> listApplications();
-
- /** Returns all applications of a tenant */
- List<Application> listApplications(TenantName name);
-
- /** Returns the given elements joined by dot "." */
- default String path(TenantName... elements) {
- return Joiner.on(".").join(elements);
- }
-
- default String path(String... elements) {
- return Joiner.on(".").join(elements);
- }
-
- default String path(ApplicationId applicationId) {
- return applicationId.tenant().value() + "." + applicationId.application().value() + "." + applicationId.instance().value();
- }
-
-}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerDbProxy.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerDbProxy.java
deleted file mode 100644
index 80fca1ab72f..00000000000
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerDbProxy.java
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.persistence;
-
-import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.TenantName;
-import com.yahoo.vespa.hosted.controller.Application;
-import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
-import com.yahoo.vespa.hosted.controller.tenant.Tenant;
-import com.yahoo.vespa.hosted.controller.tenant.UserTenant;
-
-import java.util.List;
-import java.util.Optional;
-
-/**
- * Controller database implementation that writes to both a ControllerDb and a CuratorDb.
- *
- * @author mpolden
- */
-// TODO: Remove this and ControllerDb and use only CuratorDb
-public class ControllerDbProxy implements ControllerDb {
-
- private final ControllerDb db;
- private final CuratorDb curator;
-
- public ControllerDbProxy(ControllerDb db, CuratorDb curator) {
- this.db = db;
- this.curator = curator;
- }
-
- @Override
- public void createTenant(UserTenant tenant) {
- db.createTenant(tenant);
- curator.writeTenant(tenant);
- }
-
- @Override
- public void createTenant(AthenzTenant tenant) {
- db.createTenant(tenant);
- curator.writeTenant(tenant);
- }
-
- @Override
- public void updateTenant(AthenzTenant tenant) throws PersistenceException {
- db.updateTenant(tenant);
- curator.writeTenant(tenant);
- }
-
- @Override
- public void deleteTenant(TenantName name) throws PersistenceException {
- db.deleteTenant(name);
- curator.removeTenant(name);
- }
-
- @Override
- public Optional<Tenant> getTenant(TenantName name) throws PersistenceException {
- return db.getTenant(name);
- }
-
- @Override
- public Optional<AthenzTenant> getAthenzTenant(TenantName name) throws PersistenceException {
- return db.getAthenzTenant(name);
- }
-
- @Override
- public List<Tenant> listTenants() {
- return db.listTenants();
- }
-
- @Override
- public void store(Application application) {
- db.store(application);
- curator.writeApplication(application);
- }
-
- @Override
- public void deleteApplication(ApplicationId applicationId) {
- db.deleteApplication(applicationId);
- curator.removeApplication(applicationId);
- }
-
- @Override
- public Optional<Application> getApplication(ApplicationId applicationId) {
- return db.getApplication(applicationId);
- }
-
- @Override
- public List<Application> listApplications() {
- return db.listApplications();
- }
-
- @Override
- public List<Application> listApplications(TenantName name) {
- return db.listApplications(name);
- }
-}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java
index ba713a9b6f8..5a5a8263b3f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java
@@ -35,8 +35,8 @@ import java.util.logging.Logger;
import java.util.stream.Collectors;
/**
- * Curator backed database for storing working state shared between controller servers.
- * This maps controller specific operations to general curator operations.
+ * Curator backed database for storing the persistence state of controllers. This maps controller specific operations
+ * to general curator operations.
*
* @author bratseth
* @author mpolden
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/MemoryControllerDb.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/MemoryControllerDb.java
deleted file mode 100644
index b7003c7eafd..00000000000
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/MemoryControllerDb.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.persistence;
-
-import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.TenantName;
-import com.yahoo.vespa.hosted.controller.Application;
-import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
-import com.yahoo.vespa.hosted.controller.tenant.Tenant;
-import com.yahoo.vespa.hosted.controller.tenant.UserTenant;
-
-import java.util.List;
-import java.util.Optional;
-
-/**
- * A controller db implementation backed by a mock curator. Useful for testing.
- *
- * @author Stian Kristoffersen
- */
-public class MemoryControllerDb implements ControllerDb {
-
- private final MockCuratorDb curator = new MockCuratorDb();
-
- @Override
- public void createTenant(UserTenant tenant) {
- curator.writeTenant(tenant);
- }
-
- @Override
- public void createTenant(AthenzTenant tenant) {
- curator.writeTenant(tenant);
- }
-
- @Override
- public void updateTenant(AthenzTenant tenant) {
- curator.writeTenant(tenant);
- }
-
- @Override
- public void deleteTenant(TenantName name) {
- curator.removeTenant(name);
- }
-
- @Override
- public Optional<Tenant> getTenant(TenantName name) {
- return curator.readTenant(name);
- }
-
- @Override
- public Optional<AthenzTenant> getAthenzTenant(TenantName name) {
- return curator.readAthenzTenant(name);
- }
-
- @Override
- public List<Tenant> listTenants() {
- return curator.readTenants();
- }
-
- @Override
- public void store(Application application) {
- curator.writeApplication(application);
- }
-
- @Override
- public void deleteApplication(ApplicationId applicationId) {
- curator.removeApplication(applicationId);
- }
-
- @Override
- public Optional<Application> getApplication(ApplicationId applicationId) {
- return curator.readApplication(applicationId);
- }
-
- @Override
- public List<Application> listApplications() {
- return curator.readApplications();
- }
-
- @Override
- public List<Application> listApplications(TenantName name) {
- return curator.readApplications(name);
- }
-
-}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/PersistenceException.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/PersistenceException.java
deleted file mode 100644
index b963ecbfab9..00000000000
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/PersistenceException.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.persistence;
-
-/**
- * Exception thrown by persistence layer.
- *
- * @author mpolden
- */
-public class PersistenceException extends Exception {
-
- public PersistenceException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public PersistenceException(Throwable cause) {
- super(cause);
- }
-
-}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
index 097ee6ef057..5abc6c4e14e 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
@@ -30,18 +30,16 @@ import com.yahoo.vespa.hosted.controller.api.integration.organization.MockOrgani
import com.yahoo.vespa.hosted.controller.api.integration.routing.MemoryGlobalRoutingService;
import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
-import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
-import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import com.yahoo.vespa.hosted.controller.athenz.mock.AthenzClientFactoryMock;
import com.yahoo.vespa.hosted.controller.athenz.mock.AthenzDbMock;
import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockBuildService;
import com.yahoo.vespa.hosted.controller.integration.MockMetricsService;
import com.yahoo.vespa.hosted.controller.persistence.ApplicationSerializer;
-import com.yahoo.vespa.hosted.controller.persistence.ControllerDb;
import com.yahoo.vespa.hosted.controller.persistence.CuratorDb;
-import com.yahoo.vespa.hosted.controller.persistence.MemoryControllerDb;
import com.yahoo.vespa.hosted.controller.persistence.MockCuratorDb;
import com.yahoo.vespa.hosted.controller.routing.MockRoutingGenerator;
+import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
+import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import com.yahoo.vespa.hosted.controller.versions.VersionStatus;
import com.yahoo.vespa.hosted.rotation.config.RotationsConfig;
@@ -58,7 +56,6 @@ import static org.junit.Assert.assertNotNull;
*/
public final class ControllerTester {
- private final ControllerDb db;
private final AthenzDbMock athenzDb;
private final ManualClock clock;
private final ConfigServerClientMock configServer;
@@ -74,29 +71,28 @@ public final class ControllerTester {
private Controller controller;
public ControllerTester() {
- this(new MemoryControllerDb(), new AthenzDbMock(), new ManualClock(), new ConfigServerClientMock(),
+ this(new AthenzDbMock(), new ManualClock(), new ConfigServerClientMock(),
new ZoneRegistryMock(), new GitHubMock(), new MockCuratorDb(), defaultRotationsConfig(),
new MemoryNameService(), new ArtifactRepositoryMock(), new MemoryEntityService(), new MockBuildService());
}
public ControllerTester(ManualClock clock) {
- this(new MemoryControllerDb(), new AthenzDbMock(), clock, new ConfigServerClientMock(),
+ this(new AthenzDbMock(), clock, new ConfigServerClientMock(),
new ZoneRegistryMock(), new GitHubMock(), new MockCuratorDb(), defaultRotationsConfig(),
new MemoryNameService(), new ArtifactRepositoryMock(), new MemoryEntityService(), new MockBuildService());
}
public ControllerTester(RotationsConfig rotationsConfig) {
- this(new MemoryControllerDb(), new AthenzDbMock(), new ManualClock(), new ConfigServerClientMock(),
+ this(new AthenzDbMock(), new ManualClock(), new ConfigServerClientMock(),
new ZoneRegistryMock(), new GitHubMock(), new MockCuratorDb(), rotationsConfig, new MemoryNameService(),
new ArtifactRepositoryMock(), new MemoryEntityService(), new MockBuildService());
}
- private ControllerTester(ControllerDb db, AthenzDbMock athenzDb, ManualClock clock,
+ private ControllerTester(AthenzDbMock athenzDb, ManualClock clock,
ConfigServerClientMock configServer, ZoneRegistryMock zoneRegistry,
GitHubMock gitHub, CuratorDb curator, RotationsConfig rotationsConfig,
MemoryNameService nameService, ArtifactRepositoryMock artifactRepository,
EntityService entityService, MockBuildService buildService) {
- this.db = db;
this.athenzDb = athenzDb;
this.clock = clock;
this.configServer = configServer;
@@ -108,7 +104,7 @@ public final class ControllerTester {
this.artifactRepository = artifactRepository;
this.entityService = entityService;
this.buildService = buildService;
- this.controller = createController(db, curator, rotationsConfig, configServer, clock, gitHub, zoneRegistry,
+ this.controller = createController(curator, rotationsConfig, configServer, clock, gitHub, zoneRegistry,
athenzDb, nameService, artifactRepository, entityService, buildService);
// Set the log output from the root logger to use timestamps from the manual clock ;)
@@ -143,7 +139,7 @@ public final class ControllerTester {
/** Create a new controller instance. Useful to verify that controller state is rebuilt from persistence */
public final void createNewController() {
- controller = createController(db, curator, rotationsConfig, configServer, clock, gitHub, zoneRegistry, athenzDb,
+ controller = createController(curator, rotationsConfig, configServer, clock, gitHub, zoneRegistry, athenzDb,
nameService, artifactRepository, entityService, buildService);
}
@@ -251,14 +247,13 @@ public final class ControllerTester {
return new LockedApplication(application, new Lock("/test", new MockCurator()));
}
- private static Controller createController(ControllerDb db, CuratorDb curator, RotationsConfig rotationsConfig,
+ private static Controller createController(CuratorDb curator, RotationsConfig rotationsConfig,
ConfigServerClientMock configServerClientMock, ManualClock clock,
GitHubMock gitHubClientMock, ZoneRegistryMock zoneRegistryMock,
AthenzDbMock athensDb, MemoryNameService nameService,
ArtifactRepository artifactRepository, EntityService entityService,
BuildService buildService) {
- Controller controller = new Controller(db,
- curator,
+ Controller controller = new Controller(curator,
rotationsConfig,
gitHubClientMock,
entityService,
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
index 5ccdcdbf4e8..c51689c1a40 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
@@ -78,7 +78,6 @@ public class ControllerContainerTest {
" <component id='com.yahoo.vespa.hosted.controller.integration.MockMetricsService'/>\n" +
" <component id='com.yahoo.vespa.hosted.controller.maintenance.ControllerMaintenance'/>\n" +
" <component id='com.yahoo.vespa.hosted.controller.maintenance.JobControl'/>\n" +
- " <component id='com.yahoo.vespa.hosted.controller.persistence.MemoryControllerDb'/>\n" +
" <component id='com.yahoo.vespa.hosted.controller.routing.MockRoutingGenerator'/>\n" +
" <component id='com.yahoo.vespa.hosted.controller.ArtifactRepositoryMock'/>\n" +
" <handler id='com.yahoo.vespa.hosted.controller.restapi.application.ApplicationApiHandler'>\n" +
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java
index af0dc859d89..0d5525370ee 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java
@@ -42,7 +42,7 @@ public class InactiveExpirer extends Expirer {
if (node.status().wantToRetire()) {
nodeRepository.park(node.hostname(), Agent.system, "Expired by InactiveExpirer");
} else {
- nodeRepository.setDirty(node, Agent.system, "Expired by InactiveExprier");
+ nodeRepository.setDirty(node, Agent.system, "Expired by InactiveExpirer");
}
});
}