@@ -80,8 +80,6 @@ public void init() {
8080 }
8181
8282 public void loadPreviousVersion (MysqlExecutionConfig executionConfig ) throws BusinessServiceException , IOException {
83- String schemaName = constructRVFSchema (executionConfig .getPreviousVersion ());
84- releaseDataManager .dropDatabaseIfExist (schemaName );
8583 if (executionConfig .getPreviousVersion ().endsWith (ZIP_FILE_EXTENSION )) {
8684 String rvfDbSchema = loadRelease (executionConfig .getPreviousVersion ());
8785 executionConfig .setPreviousVersion (rvfDbSchema );
@@ -92,8 +90,6 @@ public void loadPreviousVersion(MysqlExecutionConfig executionConfig) throws Bus
9290 }
9391
9492 public void loadDependencyVersion (MysqlExecutionConfig executionConfig ) throws IOException , BusinessServiceException {
95- String schemaName = constructRVFSchema (executionConfig .getExtensionDependencyVersion ());
96- releaseDataManager .dropDatabaseIfExist (schemaName );
9793 if (executionConfig .getExtensionDependencyVersion ().endsWith (ZIP_FILE_EXTENSION )) {
9894 String dependencyVersion = loadRelease (executionConfig .getExtensionDependencyVersion ());
9995 executionConfig .setExtensionDependencyVersion (dependencyVersion );
@@ -145,34 +141,41 @@ private boolean checkDeltaFilesExist(File localProspectiveFile) throws ReleaseIm
145141 return false ;
146142 }
147143
148- private String constructRVFSchema (String releaseVersion ) {
149- if (releaseVersion != null ) {
150- if (releaseVersion .endsWith (ZIP_FILE_EXTENSION )) {
151- return RvfReleaseDbSchemaNameGenerator .generate (releaseVersion );
152- }
153- return releaseVersion .startsWith (RVF_DB_PREFIX ) ? releaseVersion : RVF_DB_PREFIX + releaseVersion ;
154- } else {
155- return null ;
156- }
157- }
158-
159144 private String loadRelease (String releaseVersion ) throws IOException , BusinessServiceException {
160145 if (releaseVersion != null && releaseVersion .endsWith (ZIP_FILE_EXTENSION )) {
161146 String schemaName = RvfReleaseDbSchemaNameGenerator .generate (releaseVersion );
162- if (!releaseDataManager .isKnownRelease (schemaName ) && (!releaseDataManager .restoreReleaseFromBinaryArchive (schemaName ))) {
147+ long publishedReleaseLastModifiedDate = releaseDataManager .getPublishedReleaseLastModifiedDate (releaseVersion );
148+ long binaryArchiveSchemaLastModifiedDate = releaseDataManager .getBinaryArchiveSchemaLastModifiedDate (schemaName );
149+
150+ // If the binary archive has been deleted (- or it has not been generated yet), OR the release file has been changed,
151+ // then the schema and the binary archive schema need to be re-generated
152+ if (binaryArchiveSchemaLastModifiedDate == 0 || publishedReleaseLastModifiedDate > binaryArchiveSchemaLastModifiedDate ) {
153+ logger .info ("The Binary Archive file was deleted (- or it has not been generated yet), OR a new version of published release has been detected." );
154+ if (releaseDataManager .isKnownRelease (schemaName )) {
155+ releaseDataManager .dropSchema (schemaName );
156+ }
157+ uploadPublishedReleaseThenGenerateBinaryArchive (releaseVersion , schemaName );
158+ } else {
159+ // Restore schema from binary archive file
160+ if (!releaseDataManager .isKnownRelease (schemaName ) && !releaseDataManager .restoreReleaseFromBinaryArchive (schemaName )) {
163161 logger .info ("No existing mysql binary release available." );
164- releaseDataManager .uploadPublishedReleaseFromStore (releaseVersion , schemaName );
165- if (generateBinaryArchive ) {
166- String archiveFilename = releaseDataManager .generateBinaryArchive (schemaName );
167- logger .info ("Release mysql binary archive is generated: {}" , archiveFilename );
168- }
162+ uploadPublishedReleaseThenGenerateBinaryArchive (releaseVersion , schemaName );
163+ }
164+ }
169165
170- }
171- return schemaName ;
166+ return schemaName ;
172167 }
173168 return releaseVersion ;
174169 }
175170
171+ private void uploadPublishedReleaseThenGenerateBinaryArchive (String releaseVersion , String schemaName ) throws BusinessServiceException {
172+ releaseDataManager .uploadPublishedReleaseFromStore (releaseVersion , schemaName );
173+ if (generateBinaryArchive ) {
174+ String archiveFilename = releaseDataManager .generateBinaryArchive (schemaName );
175+ logger .info ("Release mysql binary archive is generated: {}" , archiveFilename );
176+ }
177+ }
178+
176179 public MysqlExecutionConfig createExecutionConfig (ValidationRunConfig validationConfig ) throws BusinessServiceException {
177180 MysqlExecutionConfig executionConfig = new MysqlExecutionConfig (validationConfig .getRunId (), validationConfig .isFirstTimeRelease ());
178181 executionConfig .setProspectiveVersion (RVF_DB_PREFIX + getProspectiveVersionFromFileNames (validationConfig )
0 commit comments