Issue #3254403 by paulmckibben, ranjith_kumar_k_u, longwave, Lendude, cilefen: system_post_update_sort_all_config can exhaust PHP memory in 9.3.0
(cherry picked from commit d55c0cbd36
)
merge-requests/1277/merge
parent
51d7a6cf09
commit
08a4f0fbb0
|
@ -5,6 +5,7 @@
|
|||
* Post update functions for System.
|
||||
*/
|
||||
|
||||
use Drupal\Core\Site\Settings;
|
||||
use Drupal\Core\Config\Entity\ConfigEntityUpdater;
|
||||
use Drupal\Core\Entity\Display\EntityDisplayInterface;
|
||||
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
|
||||
|
@ -208,9 +209,27 @@ function system_post_update_delete_authorize_settings() {
|
|||
/**
|
||||
* Sort all configuration according to its schema.
|
||||
*/
|
||||
function system_post_update_sort_all_config() {
|
||||
function system_post_update_sort_all_config(&$sandbox) {
|
||||
$factory = \Drupal::configFactory();
|
||||
foreach ($factory->listAll() as $name) {
|
||||
$factory->getEditable($name)->save();
|
||||
$iteration_size = Settings::get('entity_update_batch_size', 50);
|
||||
|
||||
if (empty($sandbox['progress'])) {
|
||||
$sandbox['progress'] = 0;
|
||||
$sandbox['all_config_names'] = $factory->listAll();
|
||||
$sandbox['max'] = count($sandbox['all_config_names']);
|
||||
}
|
||||
|
||||
$start = $sandbox['progress'];
|
||||
$end = min($sandbox['max'], $start + $iteration_size);
|
||||
for ($i = $start; $i < $end; $i++) {
|
||||
$factory->getEditable($sandbox['all_config_names'][$i])->save();
|
||||
}
|
||||
|
||||
if ($sandbox['max'] > 0 && $end < $sandbox['max']) {
|
||||
$sandbox['progress'] = $end;
|
||||
$sandbox['#finished'] = ($end - 1) / $sandbox['max'];
|
||||
}
|
||||
else {
|
||||
$sandbox['#finished'] = 1;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue