Skip to content

Commit b8cd72c

Browse files
committed
BUGFIX: only validate keys which are transferred before switching
1 parent 65d3aa7 commit b8cd72c

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

Classes/ReleaseSwitch/Infrastructure/RedisReleaseSwitchService.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,21 @@ public function switchContentRelease(RedisInstanceIdentifier $redisInstanceIdent
5454
}
5555

5656
$redisKeyPostfixesForEachRelease = RedisKeyPostfixesForEachRelease::fromArray($this->redisKeyPostfixesForEachReleaseConfiguration);
57+
$hasError = false;
5758
foreach ($redisKeyPostfixesForEachRelease->getRequiredKeys() as $requiredPostfix) {
58-
$key = $this->redisKeyService->getRedisKeyForPostfix($contentReleaseIdentifier, $requiredPostfix->getRedisKeyPostfix());
59-
if (!$redis->exists($key)) {
60-
$contentReleaseLogger->error('Required redis key ' . $key . ' does not exist for release thus we do not switch.');
61-
return;
59+
if ($requiredPostfix->shouldTransfer()) {
60+
$key = $this->redisKeyService->getRedisKeyForPostfix($contentReleaseIdentifier, $requiredPostfix->getRedisKeyPostfix());
61+
if (!$redis->exists($key)) {
62+
$contentReleaseLogger->error('Required redis key ' . $key . ' does not exist for release thus we do not switch.');
63+
$hasError = true;
64+
}
6265
}
6366
}
67+
if ($hasError === true) {
68+
$contentReleaseLogger->error('ABORTING directly before switch because final key validation failed.');
69+
exit(1);
70+
return;
71+
}
6472

6573
$redis->set('contentStore:current', $contentReleaseIdentifier->getIdentifier());
6674
$releaseMetadata = $this->redisContentReleaseService->fetchMetadataForContentRelease($contentReleaseIdentifier);

0 commit comments

Comments
 (0)