@@ -80,8 +80,6 @@ public void init() {
80
80
}
81
81
82
82
public void loadPreviousVersion (MysqlExecutionConfig executionConfig ) throws BusinessServiceException , IOException {
83
- String schemaName = constructRVFSchema (executionConfig .getPreviousVersion ());
84
- releaseDataManager .dropDatabaseIfExist (schemaName );
85
83
if (executionConfig .getPreviousVersion ().endsWith (ZIP_FILE_EXTENSION )) {
86
84
String rvfDbSchema = loadRelease (executionConfig .getPreviousVersion ());
87
85
executionConfig .setPreviousVersion (rvfDbSchema );
@@ -92,8 +90,6 @@ public void loadPreviousVersion(MysqlExecutionConfig executionConfig) throws Bus
92
90
}
93
91
94
92
public void loadDependencyVersion (MysqlExecutionConfig executionConfig ) throws IOException , BusinessServiceException {
95
- String schemaName = constructRVFSchema (executionConfig .getExtensionDependencyVersion ());
96
- releaseDataManager .dropDatabaseIfExist (schemaName );
97
93
if (executionConfig .getExtensionDependencyVersion ().endsWith (ZIP_FILE_EXTENSION )) {
98
94
String dependencyVersion = loadRelease (executionConfig .getExtensionDependencyVersion ());
99
95
executionConfig .setExtensionDependencyVersion (dependencyVersion );
@@ -145,34 +141,41 @@ private boolean checkDeltaFilesExist(File localProspectiveFile) throws ReleaseIm
145
141
return false ;
146
142
}
147
143
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
-
159
144
private String loadRelease (String releaseVersion ) throws IOException , BusinessServiceException {
160
145
if (releaseVersion != null && releaseVersion .endsWith (ZIP_FILE_EXTENSION )) {
161
146
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 )) {
163
161
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
+ }
169
165
170
- }
171
- return schemaName ;
166
+ return schemaName ;
172
167
}
173
168
return releaseVersion ;
174
169
}
175
170
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
+
176
179
public MysqlExecutionConfig createExecutionConfig (ValidationRunConfig validationConfig ) throws BusinessServiceException {
177
180
MysqlExecutionConfig executionConfig = new MysqlExecutionConfig (validationConfig .getRunId (), validationConfig .isFirstTimeRelease ());
178
181
executionConfig .setProspectiveVersion (RVF_DB_PREFIX + getProspectiveVersionFromFileNames (validationConfig )
0 commit comments