summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-08-19 14:05:00 +0200
committerHarald Musum <musum@verizonmedia.com>2020-08-19 14:05:00 +0200
commitd286ae0b58047a439b67c6f68137e0f7d72fd764 (patch)
treeca14bc3e58723dbe68abe3328d4755fa7e5dff58
parent441c5945add33a4b7f643c167272a9ce8e7fcff8 (diff)
Return Optional when reading application id from zookeeper
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java5
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java5
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java4
6 files changed, 15 insertions, 10 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java
index 642ac33ab09..36cac87a326 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java
@@ -60,7 +60,7 @@ public class RemoteSession extends Session {
// Read hosts allocated on the config server instance which created this
Optional<AllocatedHosts> allocatedHosts = applicationPackage.getAllocatedHosts();
- return ApplicationSet.fromList(applicationLoader.buildModels(sessionZooKeeperClient.readApplicationId(),
+ return ApplicationSet.fromList(applicationLoader.buildModels(getApplicationId(),
sessionZooKeeperClient.readDockerImageRepository(),
sessionZooKeeperClient.readVespaVersion(),
applicationPackage,
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
index c0b8b20d265..b3e35e955de 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
@@ -135,7 +135,10 @@ public abstract class Session implements Comparable<Session> {
}
/** Returns application id read from ZooKeeper. Will throw RuntimeException if not found */
- public ApplicationId getApplicationId() { return sessionZooKeeperClient.readApplicationId(); }
+ public ApplicationId getApplicationId() {
+ return sessionZooKeeperClient.readApplicationId()
+ .orElseThrow(() -> new RuntimeException("Unable to read application id for session " + sessionId));
+ }
/** Returns application id read from ZooKeeper. Will return Optional.empty() if not found */
public Optional<ApplicationId> getOptionalApplicationId() {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
index 60ec297993f..cce79412cfe 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
@@ -623,7 +623,8 @@ public class SessionRepository {
log.log(Level.INFO, "File reference for session id " + sessionId + ": " + fileReference + " not found in " + fileDirectory);
return Optional.empty();
}
- ApplicationId applicationId = sessionZKClient.readApplicationId();
+ ApplicationId applicationId = sessionZKClient.readApplicationId()
+ .orElseThrow(() -> new RuntimeException("Could not find application id for session " + sessionId));
log.log(Level.INFO, "Creating local session for tenant '" + tenantName + "' with session id " + sessionId);
LocalSession localSession = createLocalSession(sessionDir, applicationId, sessionId);
addLocalSession(localSession);
@@ -697,7 +698,7 @@ public class SessionRepository {
public Transaction createActivateTransaction(Session session) {
Transaction transaction = createSetStatusTransaction(session, Session.Status.ACTIVATE);
- transaction.add(applicationRepo.createPutTransaction(session.sessionZooKeeperClient.readApplicationId(), session.getSessionId()).operations());
+ transaction.add(applicationRepo.createPutTransaction(session.getApplicationId(), session.getSessionId()).operations());
return transaction;
}
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 80fa972a4d2..bbf72067b00 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
@@ -140,10 +140,11 @@ public class SessionZooKeeperClient {
configCurator.putData(applicationIdPath(), id.serializedForm());
}
- public ApplicationId readApplicationId() {
+ public Optional<ApplicationId> readApplicationId() {
String idString = configCurator.getData(applicationIdPath());
- if (idString == null) throw new RuntimeException("Unable to read application id at " + applicationIdPath());
- return ApplicationId.fromSerializedForm(idString);
+ return (idString == null)
+ ? Optional.empty()
+ : Optional.of(ApplicationId.fromSerializedForm(idString));
}
void writeApplicationPackageReference(FileReference applicationPackageReference) {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
index 1fa7ceed755..ee8f00f6bcf 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
@@ -201,7 +201,7 @@ public class SessionPreparerTest {
PrepareParams params = new PrepareParams.Builder().applicationId(origId).build();
prepare(testApp, params);
assertTrue(configCurator.exists(sessionsPath.append(SessionZooKeeperClient.APPLICATION_ID_PATH).getAbsolute()));
- assertThat(createSessionZooKeeperClient().readApplicationId(), is(origId));
+ assertThat(createSessionZooKeeperClient().readApplicationId().get(), is(origId));
}
@Test
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 fd0e34b9814..2fc4c0f456f 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
@@ -108,8 +108,8 @@ public class SessionZooKeeperClientTest {
SessionZooKeeperClient zkc = createSessionZKClient(sessionId);
String path = "/" + sessionId + "/" + SessionZooKeeperClient.APPLICATION_ID_PATH;
configCurator.putData(path, idString);
- ApplicationId zkId = zkc.readApplicationId();
- assertThat(zkId.serializedForm(), is(expectedIdString));
+ ApplicationId applicationId = zkc.readApplicationId().get();
+ assertThat(applicationId.serializedForm(), is(expectedIdString));
}
private SessionZooKeeperClient createSessionZKClient(String sessionId) {