diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-06-17 11:51:19 +0200 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-06-17 11:51:19 +0200 |
commit | 3386490ed6a39fcc576e650e3f61858efbe1d379 (patch) | |
tree | 6d2fe0cc831ace1d1b0a673121c1e60eac3f8eac /configserver | |
parent | 544ba2e3d8cc1e4f1766ead5651712401d98a86f (diff) |
Use Optional for active session id
Diffstat (limited to 'configserver')
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java | 27 |
1 files changed, 13 insertions, 14 deletions
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 8317dc02e90..24e1011ac50 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 @@ -398,7 +398,7 @@ public class SessionRepository { */ public LocalSession createSession(File applicationDirectory, ApplicationId applicationId, TimeoutBudget timeoutBudget, Optional<Long> activeSessionId) { - return create(applicationDirectory, applicationId, activeSessionId.orElse(nonExistingActiveSession), false, timeoutBudget); + return create(applicationDirectory, applicationId, activeSessionId, false, timeoutBudget); } public RemoteSession createRemoteSession(long sessionId) { @@ -417,14 +417,15 @@ public class SessionRepository { File configApplicationDir, ApplicationId applicationId, long sessionId, - long currentlyActiveSessionId, + Optional<Long> currentlyActiveSessionId, boolean internalRedeploy) { long deployTimestamp = System.currentTimeMillis(); String user = System.getenv("USER"); if (user == null) { user = "unknown"; } - DeployData deployData = new DeployData(user, userDir.getAbsolutePath(), applicationId, deployTimestamp, internalRedeploy, sessionId, currentlyActiveSessionId); + DeployData deployData = new DeployData(user, userDir.getAbsolutePath(), applicationId, deployTimestamp, + internalRedeploy, sessionId, currentlyActiveSessionId.orElse(nonExistingActiveSession)); return FilesApplicationPackage.fromFileWithDeployData(configApplicationDir, deployData); } @@ -457,7 +458,7 @@ public class SessionRepository { File existingApp = getSessionAppDir(existingSession.getSessionId()); ApplicationId existingApplicationId = existingSession.getApplicationId(); - long activeSessionId = getActiveSessionId(existingApplicationId); + Optional<Long> activeSessionId = getActiveSessionId(existingApplicationId); logger.log(Level.FINE, "Create new session for application id '" + existingApplicationId + "' from existing active session " + activeSessionId); LocalSession session = create(existingApp, existingApplicationId, activeSessionId, internalRedeploy, timeoutBudget); // Note: Needs to be kept in sync with calls in SessionPreparer.writeStateToZooKeeper() @@ -471,7 +472,7 @@ public class SessionRepository { return session; } - private LocalSession create(File applicationFile, ApplicationId applicationId, long currentlyActiveSessionId, + private LocalSession create(File applicationFile, ApplicationId applicationId, Optional<Long> currentlyActiveSessionId, boolean internalRedeploy, TimeoutBudget timeoutBudget) { long sessionId = getNextSessionId(); try { @@ -489,7 +490,7 @@ public class SessionRepository { * It does not wait for session being created on other servers */ private LocalSession createLocalSession(File applicationFile, ApplicationId applicationId, - long sessionId, long currentlyActiveSessionId) { + long sessionId, Optional<Long> currentlyActiveSessionId) { try { ApplicationPackage applicationPackage = createApplicationPackage(applicationFile, applicationId, sessionId, currentlyActiveSessionId, false); @@ -501,7 +502,7 @@ public class SessionRepository { } private ApplicationPackage createApplicationPackage(File applicationFile, ApplicationId applicationId, - long sessionId, long currentlyActiveSessionId, + long sessionId, Optional<Long> currentlyActiveSessionId, boolean internalRedeploy) throws IOException { File userApplicationDir = getSessionAppDir(sessionId); IOUtils.copyDirectory(applicationFile, userApplicationDir); @@ -554,18 +555,16 @@ public class SessionRepository { return Optional.of(createLocalSession(sessionDir, applicationId, sessionId, - applicationRepo.activeSessionOf(applicationId).orElse(nonExistingActiveSession))); + applicationRepo.activeSessionOf(applicationId))); } return Optional.empty(); } - // Return Optional instead of faking it with nonExistingActiveSession - private long getActiveSessionId(ApplicationId applicationId) { + private Optional<Long> getActiveSessionId(ApplicationId applicationId) { List<ApplicationId> applicationIds = applicationRepo.activeApplications(); - if (applicationIds.contains(applicationId)) { - return applicationRepo.requireActiveSessionOf(applicationId); - } - return nonExistingActiveSession; + return applicationIds.contains(applicationId) + ? Optional.of(applicationRepo.requireActiveSessionOf(applicationId)) + : Optional.empty(); } private long getNextSessionId() { |