Skip to content
Snippets Groups Projects

3446876 - use own static cache to prevent static cache flushing during updates...

1 file
+ 18
6
Compare changes
  • Side-by-side
  • Inline
+ 18
6
@@ -16,8 +16,7 @@ use Drupal\config_track\Controller\ConfigTrackController;
*/
function config_track_entity_presave_first(EntityInterface $entity) {
if ($entity instanceof ConfigEntityInterface) {
$config_track =& drupal_static('config_track', []);
$config_track =& config_track_static();
// Only register the shutdown function once.
if (empty($config_track)) {
drupal_register_shutdown_function('config_track_shutdown');
@@ -39,7 +38,7 @@ function config_track_entity_presave_first(EntityInterface $entity) {
*/
function config_track_entity_presave_last(EntityInterface $entity) {
if ($entity instanceof ConfigEntityInterface) {
$config_track =& drupal_static('config_track', []);
$config_track =& config_track_static();
$keys = array_keys($config_track);
foreach (array_reverse($keys) as $key) {
$config_data =& $config_track[$key];
@@ -69,7 +68,7 @@ function config_track_entity_presave_last(EntityInterface $entity) {
*/
function config_track_entity_predelete_first(EntityInterface $entity) {
if ($entity instanceof ConfigEntityInterface) {
$config_track =& drupal_static('config_track', []);
$config_track =& config_track_static();
// Only register the shutdown function once.
if (empty($config_track)) {
@@ -92,7 +91,7 @@ function config_track_entity_predelete_first(EntityInterface $entity) {
*/
function config_track_entity_predelete_last(EntityInterface $entity) {
if ($entity instanceof ConfigEntityInterface) {
$config_track =& drupal_static('config_track', []);
$config_track =& config_track_static();
$keys = array_keys($config_track);
foreach (array_reverse($keys) as $key) {
$config_data =& $config_track[$key];
@@ -133,7 +132,7 @@ function config_track_shutdown() {
}
$timestamp = \Drupal::time()->getRequestTime();
$config_track =& drupal_static('config_track', []);
$config_track =& config_track_static();
/** @var \Drupal\config_track\Controller\ConfigTrackController $config_track_controller */
$config_track_controller = \Drupal::classResolver(ConfigTrackController::class);
foreach ($config_track as $config_change) {
@@ -244,3 +243,16 @@ function config_track_convert_markup_to_string(array &$data) {
}
unset($value);
}
/**
* Returns a reference to the config_track static cache.
*
* @return array
*/
function &config_track_static() {
// We cannot use drupal_static() since drush updb clears the Drupal static
// caches before the shutdown functions are executed, however we need the
// static cache of config_track in the shutdown function.
static $config_track = [];
return $config_track;
}
Loading