summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-07-14 12:17:21 +0200
committerHarald Musum <musum@verizonmedia.com>2020-07-14 12:17:21 +0200
commit8670faceebe8ce6aeb345b457e2c0eb8c6c5c2ac (patch)
tree05fe48c1912d09a41342fc56019af2dc21771dce /configserver
parent35f911d07b35ccf6ab839cd664167ee0518da73e (diff)
Do not use default application id if none found in zookeeper
This seems to be wrong to me and probably a bandaid for some other bug that existed at some time. If something fails after this change goes in we should try to fix it the proper way
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java6
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionTest.java17
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java5
5 files changed, 19 insertions, 15 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 41ec7626049..bc9fa96f943 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
@@ -677,7 +677,11 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
tenantRepository.getAllTenants().forEach(tenant -> sessionsPerTenant.put(tenant, tenant.getSessionRepository().getLocalSessions()));
Set<ApplicationId> applicationIds = new HashSet<>();
- sessionsPerTenant.values().forEach(sessionList -> sessionList.forEach(s -> applicationIds.add(s.getApplicationId())));
+ sessionsPerTenant.values()
+ .forEach(sessionList -> sessionList.stream()
+ .map(Session::getApplicationId)
+ .filter(Objects::nonNull)
+ .forEach(applicationIds::add));
Map<ApplicationId, Long> activeSessions = new HashMap<>();
applicationIds.forEach(applicationId -> {
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 def629f738c..466138c817f 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
@@ -134,13 +134,13 @@ public class Deployment implements com.yahoo.config.provision.Deployment {
try (ActionTimer timer = applicationRepository.timerFor(session.getApplicationId(), "deployment.activateMillis")) {
TimeoutBudget timeoutBudget = new TimeoutBudget(clock, timeout);
+ validateSessionStatus(session);
ApplicationId applicationId = session.getApplicationId();
if ( ! timeoutBudget.hasTimeLeft()) throw new RuntimeException("Timeout exceeded when trying to activate '" + applicationId + "'");
RemoteSession previousActiveSession;
try (Lock lock = tenant.getApplicationRepo().lock(applicationId)) {
- validateSessionStatus(session);
NestedTransaction transaction = new NestedTransaction();
previousActiveSession = applicationRepository.getActiveSession(applicationId);
transaction.add(deactivateCurrentActivateNew(previousActiveSession, session, ignoreSessionStaleFailure));
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
index 807629a2148..906490ad8ba 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
@@ -150,8 +150,8 @@ public class SessionZooKeeperClient {
}
public ApplicationId readApplicationId() {
- if ( ! configCurator.exists(applicationIdPath())) return ApplicationId.defaultId();
- return ApplicationId.fromSerializedForm(configCurator.getData(applicationIdPath()));
+ String idString = configCurator.getData(applicationIdPath());
+ return idString == null ? null : ApplicationId.fromSerializedForm(idString);
}
void writeApplicationPackageReference(FileReference applicationPackageReference) {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionTest.java
index c1377ae439b..496ded249fa 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionTest.java
@@ -62,7 +62,7 @@ public class LocalSessionTest {
.configServerDBDir(temporaryFolder.newFolder().getAbsolutePath())
.build())
.build();
- tenantRepository = new TenantRepository(componentRegistry, false);
+ tenantRepository = new TenantRepository(componentRegistry);
tenantRepository.addTenant(tenantName);
configCurator = ConfigCurator.create(curator);
}
@@ -126,12 +126,14 @@ public class LocalSessionTest {
}
zkClient.write(Collections.singletonMap(new Version(0, 0, 0), new MockFileRegistry()));
TenantApplications applications = tenantRepository.getTenant(tenantName).getApplicationRepo();
- applications.createApplication(zkc.readApplicationId());
- return new LocalSession(tenant, sessionId, FilesApplicationPackage.fromFile(testApp), zkc, applications);
+ applications.createApplication(applicationId());
+ LocalSession session = new LocalSession(tenant, sessionId, FilesApplicationPackage.fromFile(testApp), zkc, applications);
+ session.setApplicationId(applicationId());
+ return session;
}
private void doPrepare(LocalSession session) {
- doPrepare(session, new PrepareParams.Builder().build());
+ doPrepare(session, new PrepareParams.Builder().applicationId(applicationId()).build());
}
private void doPrepare(LocalSession session, PrepareParams params) {
@@ -140,8 +142,11 @@ public class LocalSessionTest {
}
private DeployHandlerLogger getLogger() {
- return new DeployHandlerLogger(new Slime().get(), false,
- new ApplicationId.Builder().tenant(tenantName).applicationName("testapp").build());
+ return new DeployHandlerLogger(new Slime().get(), false, applicationId());
+ }
+
+ private ApplicationId applicationId() {
+ return new ApplicationId.Builder().tenant(tenantName).applicationName("testapp").build();
}
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
index 5633ec2c5f8..1d7df7acfd0 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
@@ -85,11 +85,6 @@ public class SessionZooKeeperClientTest {
}
@Test
- public void require_that_default_name_is_returned_if_node_does_not_exist() {
- assertThat(createSessionZKClient("3").readApplicationId().application().value(), is("default"));
- }
-
- @Test
public void require_that_create_time_can_be_written_and_read() {
SessionZooKeeperClient zkc = createSessionZKClient("3");
curator.delete(Path.fromString("3"));