From ef724006566ae91cf91fa36ed20e94a24a3939bd Mon Sep 17 00:00:00 2001 From: anhefti Date: Mon, 12 Jul 2021 17:00:19 +0200 Subject: [PATCH] fixed setup for kuberneetes --- .../SEBServerMigrationStrategy.java | 20 ++++++++++++------- .../servicelayer/dao/WebserviceInfoDAO.java | 2 ++ .../dao/impl/WebserviceInfoDAOImpl.java | 14 +++++++++++++ .../weblayer/api/ExamAPI_V1_Controller.java | 4 ++++ .../config/application-dev.properties | 1 + 5 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/SEBServerMigrationStrategy.java b/src/main/java/ch/ethz/seb/sebserver/webservice/SEBServerMigrationStrategy.java index 6ab49b36..a97b3393 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/SEBServerMigrationStrategy.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/SEBServerMigrationStrategy.java @@ -41,21 +41,27 @@ public class SEBServerMigrationStrategy implements FlywayMigrationStrategy { @Override public void migrate(final Flyway flyway) { try { + // If we are in a distributed setup only apply migration task if this is the master service - if (this.webserviceInfo.isDistributed() - && !this.webserviceInfoDAO.isMaster(this.webserviceInfo.getWebserviceUUID())) { + // or if there was no data base initialization yet at all. + if (this.webserviceInfo.isDistributed()) { + if (this.webserviceInfoDAO.isInitialized()) { + final boolean isMaster = this.webserviceInfoDAO.isMaster(this.webserviceInfo.getWebserviceUUID()); + if (!isMaster) { + log.info( + "Skip migration task since this is not a master instance: {}", + this.webserviceInfo.getWebserviceUUID()); - log.info( - "Skip migration task since this is not a master instance: {}", - this.webserviceInfo.getWebserviceUUID()); - - return; + return; + } + } } if (this.cleanDBOnStartup) { flyway.clean(); } flyway.migrate(); + } catch (final Exception e) { log.error("Failed to apply migration task: ", e); } diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/WebserviceInfoDAO.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/WebserviceInfoDAO.java index 703ed87e..9bff3796 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/WebserviceInfoDAO.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/WebserviceInfoDAO.java @@ -14,6 +14,8 @@ package ch.ethz.seb.sebserver.webservice.servicelayer.dao; * the persistent data table. */ public interface WebserviceInfoDAO { + boolean isInitialized(); + /** Register a SEB webservice within the persistent storage * * @param uuid A unique identifier that was generated by the webservice on startup diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/WebserviceInfoDAOImpl.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/WebserviceInfoDAOImpl.java index 6944c75b..9cd25318 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/WebserviceInfoDAOImpl.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/WebserviceInfoDAOImpl.java @@ -47,6 +47,20 @@ public class WebserviceInfoDAOImpl implements WebserviceInfoDAO { this.forceMaster = forceMaster; } + @Override + @Transactional + public boolean isInitialized() { + try { + this.webserviceServerInfoRecordMapper + .selectByExample() + .build() + .execute(); + return true; + } catch (final Exception e) { + return false; + } + } + @Transactional @Override public boolean register(final String uuid, final String address) { diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/weblayer/api/ExamAPI_V1_Controller.java b/src/main/java/ch/ethz/seb/sebserver/webservice/weblayer/api/ExamAPI_V1_Controller.java index 3449853b..c29d079c 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/weblayer/api/ExamAPI_V1_Controller.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/weblayer/api/ExamAPI_V1_Controller.java @@ -269,6 +269,10 @@ public class ExamAPI_V1_Controller { final String pingNumString = request.getParameter(API.EXAM_API_PING_NUMBER); final String instructionConfirm = request.getParameter(API.EXAM_API_PING_INSTRUCTION_CONFIRM); + if (log.isTraceEnabled()) { + log.trace("****************** SEB client connection: {}", connectionToken); + } + if (instructionConfirm != null) { this.sebClientConnectionService.confirmInstructionDone(connectionToken, instructionConfirm); } diff --git a/src/main/resources/config/application-dev.properties b/src/main/resources/config/application-dev.properties index 34a799ba..ac3ab02d 100644 --- a/src/main/resources/config/application-dev.properties +++ b/src/main/resources/config/application-dev.properties @@ -11,6 +11,7 @@ logging.level.ch=INFO logging.level.org.springframework.cache=INFO logging.level.ch.ethz.seb.sebserver.webservice.servicelayer.lms.impl=DEBUG logging.level.ch.ethz.seb.sebserver.webservice.servicelayer.session=DEBUG +logging.level.ch.ethz.seb.sebserver.webservice.weblayer.api.ExamAPI_V1_Controller=TRACE sebserver.http.client.connect-timeout=150000 sebserver.http.client.connection-request-timeout=100000