diff -u b/core/includes/config.inc b/core/includes/config.inc --- b/core/includes/config.inc +++ b/core/includes/config.inc @@ -141,11 +141,11 @@ 'delete' => array(), ); - foreach (array_diff_assoc($target_config_data, $source_config_data) as $name => $value) { + foreach (array_diff_key($target_config_data, $source_config_data) as $name => $value) { $config_changes['delete'][] = $value['name']; } - foreach (array_diff_assoc($source_config_data, $target_config_data) as $name => $value) { + foreach (array_diff_key($source_config_data, $target_config_data) as $name => $value) { $config_changes['create'][] = $value['name']; } @@ -200,6 +200,8 @@ * synchronization error, or NULL if there are no changes to synchronize. */ function config_import() { + // Invalidate config objects. + drupal_container()->get('config.factory')->resetConfigs(); // Retrieve a list of differences between staging and the active configuration. $source_storage = drupal_container()->get('config.storage.staging'); $target_storage = drupal_container()->get('config.storage'); diff -u b/core/lib/Drupal/Core/Config/Config.php b/core/lib/Drupal/Core/Config/Config.php --- b/core/lib/Drupal/Core/Config/Config.php +++ b/core/lib/Drupal/Core/Config/Config.php @@ -127,6 +127,9 @@ * TRUE if this config object does not exist in storage. */ public function isNew() { + if (!$this->isLoaded) { + $this->load(); + } return $this->isNew; } diff -u b/core/lib/Drupal/Core/Config/ConfigFactory.php b/core/lib/Drupal/Core/Config/ConfigFactory.php --- b/core/lib/Drupal/Core/Config/ConfigFactory.php +++ b/core/lib/Drupal/Core/Config/ConfigFactory.php @@ -79,2 +79,5 @@ + function resetConfigs() { + $this->configs = array(); + } }