diff -u b/core/includes/config.inc b/core/includes/config.inc --- b/core/includes/config.inc +++ b/core/includes/config.inc @@ -292,7 +292,7 @@ $config_entities = array(); $info = entity_get_info(); foreach ($info as $entity_type => $entity_info) { - if ($entity_info['module'] == $module && isset($entity_info['config_prefix'])) { + if ($entity_info['module'] == $module && is_subclass_of($entity_info['class'], 'Drupal\Core\Config\Entity\ConfigEntityBase')) { $config_entities[$entity_type] = $entity_info; } } diff -u b/core/modules/config/config.admin.inc b/core/modules/config/config.admin.inc --- b/core/modules/config/config.admin.inc +++ b/core/modules/config/config.admin.inc @@ -94,7 +94,10 @@ * Form submission handler for config_admin_import_form(). */ function config_admin_import_form_submit($form, &$form_state) { - if (config_import()) { + if (!lock()->lockMayBeAvailable(CONFIG_IMPORT_LOCK)) { + drupal_set_message(t('Another request may be synchronizing configuration already.')); + } + else if (config_import()) { // Once a sync completes, we empty the staging directory. This prevents // changes from being accidentally overwritten by stray files getting // imported later. @@ -106,10 +109,6 @@ drupal_set_message(t('The configuration was imported successfully.')); } else { - // Another request may be synchronizing configuration already. Wait for it - // to complete before returning the error, so already synchronized changes - // do not appear again. - lock()->wait(CONFIG_IMPORT_LOCK); drupal_set_message(t('The import failed due to an error. Any errors have been logged.'), 'error'); } } diff -u b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php --- b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php +++ b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php @@ -109,7 +109,7 @@ // Attempt to import configuration and verify that an error message appears. $this->drupalPost(NULL, array(), t('Import all')); $this->assertUrl('admin/config/development/sync'); - $this->assertText(t('The import failed due to an error. Any errors have been logged.')); + $this->assertText(t('Another request may be synchronizing configuration already.')); // Release the lock, just to keep testing sane. lock()->release('config_import');