MDL-38165 cache: fixed up application event purging

This commit is contained in:
Sam Hemelryk 2013-02-27 18:22:28 +13:00
parent b6c86be197
commit 43394c5114

View File

@ -1094,10 +1094,11 @@ class cache_application extends cache implements cache_loader_with_locking {
$cache = cache::make('core', 'eventinvalidation');
$events = $cache->get_many($definition->get_invalidation_events());
$todelete = array();
$purgeall = false;
// Iterate the returned data for the events.
foreach ($events as $event => $keys) {
if ($keys === false) {
// There are no keys.
// No data to be invalidated yet.
continue;
}
// Look at each key and check the timestamp.
@ -1105,11 +1106,18 @@ class cache_application extends cache implements cache_loader_with_locking {
// If the timestamp of the event is more than or equal to the last invalidation (happened between the last
// invalidation and now)then we need to invaliate the key.
if ($timestamp >= $lastinvalidation) {
if ($key === 'purged') {
$purgeall = true;
break;
} else {
$todelete[] = $key;
}
}
}
if (!empty($todelete)) {
}
if ($purgeall) {
$this->purge();
} else if (!empty($todelete)) {
$todelete = array_unique($todelete);
$this->delete_many($todelete);
}