Skip to content

Commit 53ab276

Browse files
varshavaradarajanzabil
authored andcommitted
Removed an extra post merge validation. (#2594)
* Removed an extra post merge validation.
1 parent cc69476 commit 53ab276

File tree

1 file changed

+24
-33
lines changed

1 file changed

+24
-33
lines changed

server/src/com/thoughtworks/go/config/GoFileConfigDataSource.java

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -301,8 +301,7 @@ public synchronized GoConfigSaveResult writeWithLock(UpdateConfigCommand updatin
301301
List<PartialConfig> lastKnownPartials = cachedGoPartials.lastKnownPartials();
302302
List<PartialConfig> lastValidPartials = cachedGoPartials.lastValidPartials();
303303
try {
304-
String configAsXml = trySavingConfig(updatingCommand, configHolder, lastKnownPartials);
305-
validatedConfigHolder = internalLoad(configAsXml, getConfigUpdatingUser(updatingCommand), lastKnownPartials);
304+
validatedConfigHolder = trySavingConfig(updatingCommand, configHolder, lastKnownPartials);
306305
updateMergedConfigForEdit(validatedConfigHolder, lastKnownPartials);
307306
} catch (Exception e) {
308307
if (lastKnownPartials.isEmpty() || areKnownPartialsSameAsValidPartials(lastKnownPartials, lastValidPartials)) {
@@ -312,8 +311,7 @@ public synchronized GoConfigSaveResult writeWithLock(UpdateConfigCommand updatin
312311
"Merged config update operation failed on LATEST %s partials. Falling back to using LAST VALID %s partials. Exception message was: %s",
313312
lastKnownPartials.size(), lastValidPartials.size(), e.getMessage()), e);
314313
try {
315-
String configAsXml = trySavingConfig(updatingCommand, configHolder, lastValidPartials);
316-
validatedConfigHolder = internalLoad(configAsXml, getConfigUpdatingUser(updatingCommand), lastValidPartials);
314+
validatedConfigHolder = trySavingConfig(updatingCommand, configHolder, lastValidPartials);
317315
updateMergedConfigForEdit(validatedConfigHolder, lastValidPartials);
318316
LOGGER.info(String.format("Update operation on merged configuration succeeded with old %s LAST VALID partials.", lastValidPartials.size()));
319317
} catch (GoConfigInvalidException fallbackFailed) {
@@ -366,25 +364,35 @@ private void updateMergedConfigForEdit(GoConfigHolder validatedConfigHolder, Lis
366364
validatedConfigHolder.mergedConfigForEdit = mergedCruiseConfigForEdit;
367365
}
368366

369-
private String trySavingConfig(UpdateConfigCommand updatingCommand, GoConfigHolder configHolder, List<PartialConfig> partials) throws Exception {
370-
String configAsXml = getModifiedConfig(updatingCommand, configHolder, partials);
367+
private GoConfigHolder trySavingConfig(UpdateConfigCommand updatingCommand, GoConfigHolder configHolder, List<PartialConfig> partials) throws Exception {
368+
String configAsXml;
369+
GoConfigHolder validatedConfigHolder;
370+
LOGGER.debug("[Config Save] ==-- Getting modified config");
371+
if (shouldMergeConfig(updatingCommand, configHolder)) {
372+
if (!systemEnvironment.get(SystemEnvironment.ENABLE_CONFIG_MERGE_FEATURE)) {
373+
throw new ConfigMergeException(ConfigFileHasChangedException.CONFIG_CHANGED_PLEASE_REFRESH);
374+
}
375+
configAsXml = getMergedConfig((NoOverwriteUpdateConfigCommand) updatingCommand, configHolder.configForEdit.getMd5(), partials);
376+
try {
377+
validatedConfigHolder = internalLoad(configAsXml, getConfigUpdatingUser(updatingCommand), partials);
378+
} catch (Exception e) {
379+
LOGGER.info(format("[CONFIG_MERGE] Post merge validation failed, latest-md5: %s", configHolder.configForEdit.getMd5()));
380+
throw new ConfigMergePostValidationException(e.getMessage(), e);
381+
}
382+
} else {
383+
configAsXml = getUnmergedConfig(updatingCommand, configHolder, partials);
384+
validatedConfigHolder = internalLoad(configAsXml, getConfigUpdatingUser(updatingCommand), partials);
385+
}
371386
LOGGER.info(String.format("[Configuration Changed] Saving updated configuration."));
372387
writeToConfigXmlFile(configAsXml);
373-
return configAsXml;
388+
return validatedConfigHolder;
374389
}
375390

376391
private ConfigModifyingUser getConfigUpdatingUser(UpdateConfigCommand updatingCommand) {
377392
return updatingCommand instanceof UserAware ? ((UserAware) updatingCommand).user() : new ConfigModifyingUser();
378393
}
379394

380-
private String getModifiedConfig(UpdateConfigCommand updatingCommand, GoConfigHolder configHolder, List<PartialConfig> partials) throws Exception {
381-
LOGGER.debug("[Config Save] ==-- Getting modified config");
382-
if (shouldMergeConfig(updatingCommand, configHolder)) {
383-
if (!systemEnvironment.get(SystemEnvironment.ENABLE_CONFIG_MERGE_FEATURE)) {
384-
throw new ConfigMergeException(ConfigFileHasChangedException.CONFIG_CHANGED_PLEASE_REFRESH);
385-
}
386-
return getMergedConfig((NoOverwriteUpdateConfigCommand) updatingCommand, configHolder.configForEdit.getMd5(), partials);
387-
}
395+
private String getUnmergedConfig(UpdateConfigCommand updatingCommand, GoConfigHolder configHolder, List<PartialConfig> partials) throws Exception {
388396
CruiseConfig deepCloneForEdit = cloner.deepClone(configHolder.configForEdit);
389397
deepCloneForEdit.setPartials(partials);
390398
CruiseConfig config = updatingCommand.update(deepCloneForEdit);
@@ -416,27 +424,10 @@ private String getMergedConfig(NoOverwriteUpdateConfigCommand noOverwriteCommand
416424
serverVersion.version(), timeProvider);
417425

418426
String mergedConfigXml = configRepository.getConfigMergedWithLatestRevision(configRevision, oldMd5);
419-
validateMergedXML(mergedConfigXml, latestMd5, partials);
427+
LOGGER.debug("[Config Save] -=- Done converting merged config to XML");
420428
return mergedConfigXml;
421429
}
422430

423-
private CruiseConfig validateMergedXML(String mergedConfigXml, String latestMd5, final List<PartialConfig> partials) throws Exception {
424-
LOGGER.debug("[Config Save] -=- Converting merged config to XML");
425-
try {
426-
return magicalGoConfigXmlLoader.loadConfigHolder(mergedConfigXml, new MagicalGoConfigXmlLoader.Callback() {
427-
@Override
428-
public void call(CruiseConfig cruiseConfig) {
429-
cruiseConfig.setPartials(partials);
430-
}
431-
}).configForEdit;
432-
} catch (Exception e) {
433-
LOGGER.info(format("[CONFIG_MERGE] Post merge validation failed, latest-md5: %s", latestMd5));
434-
throw new ConfigMergePostValidationException(e.getMessage(), e);
435-
} finally {
436-
LOGGER.debug("[Config Save] -=- Done converting merged config to XML");
437-
}
438-
}
439-
440431
private String convertMutatedConfigToXml(CruiseConfig modifiedConfig, String latestMd5) throws Exception {
441432
try {
442433
return configAsXml(modifiedConfig, false);

0 commit comments

Comments
 (0)