diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-08-19 14:05:00 +0200 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-08-19 14:05:00 +0200 |
commit | d286ae0b58047a439b67c6f68137e0f7d72fd764 (patch) | |
tree | ca14bc3e58723dbe68abe3328d4755fa7e5dff58 /configserver | |
parent | 441c5945add33a4b7f643c167272a9ce8e7fcff8 (diff) |
Return Optional when reading application id from zookeeper
Diffstat (limited to 'configserver')
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) { |