Fix bugs in update path surfaced by config validation

Created on 15 November 2023, 7 months ago
Updated 6 June 2024, 11 days ago

Problem/Motivation

In πŸ“Œ [PP-1] Configuration schema & required keys Needs review , if I revert the newly added \Drupal\FunctionalTests\Update\UpdatePathTestBase::$configSchemaCheckerExclusions, then the tests fail, proving that this is indeed still necessary.

Failures:

  1. Drupal\Tests\views\Functional\Update\ViewsFixRevisionIdUpdateTest::testViewsPostUpdateFixRevisionId
    There should be no errors in configuration 'block.block.claro_help_search'. Errors:
    Schema key 0 failed with: [] 'uuid' is a required key.
    
    Failed asserting that Array &0 (
        0 => '[] 'uuid' is a required key.'
    ) is true.
    

    … even though that block does not exist in the update path fixture, nor is it installed prior to updates getting executed. This makes it highly likely to be caused by help_post_update_help_topics_search(), introduced in πŸ“Œ Merge Help Topics classes into Help with BC layer Fixed .

    Same thing for search.page.help_search.

  2. block.block.stark_testblock, block.block.testblock and editor.editor.test_text_format only exist in the "filled" fixture, and cause problems only for update path tests using that one. The block portion of this is possibly caused by ✨ Prefix block machine name suggestions with the theme machine name Fixed .

Steps to reproduce

Proposed resolution

  1. Revert
      protected static $configSchemaCheckerExclusions = [
        // The following config trigger config schema validation errors, even after
        // the update. An update path is needed to fix these.
        // @see drupal-9.4.0.filled.standard.php.gz
              // @todo Remove in <follow-up issue to be created>
        'block.block.claro_help_search',
        'block.block.stark_testblock',
        'block.block.testblock',
        'editor.editor.test_text_format',
        'search.page.help_search',
      ];
    
  2. Add the missing update paths

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

πŸ› Bug report
Status

Active

Version

11.0 πŸ”₯

Component
HelpΒ  β†’

Last updated 11 days ago

No maintainer
Created by

πŸ‡§πŸ‡ͺBelgium Wim Leers Ghent πŸ‡§πŸ‡ͺπŸ‡ͺπŸ‡Ί

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

  • Issue created by @Wim Leers
  • πŸ‡§πŸ‡ͺBelgium Wim Leers Ghent πŸ‡§πŸ‡ͺπŸ‡ͺπŸ‡Ί
  • πŸ‡«πŸ‡·France andypost

    Does it mean it needs to update dump or we can just add extra fixtures to existing dumps?

  • πŸ‡­πŸ‡ΊHungary mxr576 Hungary

    I have just found this issue after updated a project and realized that help_post_update_help_topics_search() created two configs without UUIDd that also made our strict QA pipeline fail, since the exported config in config/sync differs from the active config of clean site created via drush si -y --existing-config.

    $ git diff
    diff --git a/config/sync/block.block.claro_help_search.yml b/config/sync/block.block.claro_help_search.yml
    index aca7524..6695d6d 100644
    --- a/config/sync/block.block.claro_help_search.yml
    +++ b/config/sync/block.block.claro_help_search.yml
    @@ -1,3 +1,4 @@
    +uuid: 17c15c63-085d-4ac2-aad3-a19746c37ccd
     langcode: en
     status: true
     dependencies:
    diff --git a/config/sync/search.page.help_search.yml b/config/sync/search.page.help_search.yml
    index 38d4344..b9b39a9 100644
    --- a/config/sync/search.page.help_search.yml
    +++ b/config/sync/search.page.help_search.yml
    @@ -1,3 +1,4 @@
    +uuid: 6f35532e-b3ab-4004-bfb2-db2b4482f004
     langcode: en
     status: true
     dependencies:
    
    

    This also means that a UUID gets added to these config after a clean site install and can be exported to config/sync, but it would be beneficial if a follow up update hook would be added to fix the could-be-missing UUID problem on existing projects.

  • πŸ‡­πŸ‡ΊHungary mxr576 Hungary

    UUID generation was missing from there, indeed.
    Now that the update hook is out, it can be fixed, but already updated sites will need a workaround for fixing the missing UUID.

    In our case the CI prevented merging the change without a UUID, but others probably weren't that lucky.

  • πŸ‡­πŸ‡ΊHungary mxr576 Hungary

    Btw, should not config storage generate a UUID automatically when a new config is saved via standard API calls? Is there an issue for that already?

Production build 0.69.0 2024