Handle errors in reading cache
Summary: I've stored `PhutilSafeHTML` instance to cache on devbox and then wasn't able to read it in production. Test Plan: Displayed revision with unreadable cache, saw error in error log but not fatal. Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D4520
This commit is contained in:
@@ -188,10 +188,14 @@ final class PhabricatorMarkupEngine {
|
||||
}
|
||||
|
||||
if ($use_cache) {
|
||||
$blocks = id(new PhabricatorMarkupCache())->loadAllWhere(
|
||||
'cacheKey IN (%Ls)',
|
||||
array_keys($use_cache));
|
||||
$blocks = mpull($blocks, null, 'getCacheKey');
|
||||
try {
|
||||
$blocks = id(new PhabricatorMarkupCache())->loadAllWhere(
|
||||
'cacheKey IN (%Ls)',
|
||||
array_keys($use_cache));
|
||||
$blocks = mpull($blocks, null, 'getCacheKey');
|
||||
} catch (Exception $ex) {
|
||||
phlog($ex);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($objects as $key => $info) {
|
||||
@@ -220,11 +224,7 @@ final class PhabricatorMarkupEngine {
|
||||
if (isset($use_cache[$key])) {
|
||||
// This is just filling a cache and always safe, even on a read pathway.
|
||||
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
|
||||
try {
|
||||
$blocks[$key]->save();
|
||||
} catch (AphrontQueryDuplicateKeyException $ex) {
|
||||
// Ignore this, we just raced to write the cache.
|
||||
}
|
||||
$blocks[$key]->replace();
|
||||
unset($unguarded);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user