Problem/Motivation

Canvas generates a component config entity for every block plugin it discovers while the modules install. At that point the Drupal CMS Search view still publishes its page display's exposed form as a block, so Canvas creates canvas.component.block.views_exposed_filter_block.search-page.

The recipe then sets display.page.display_options.exposed_block: false on views.view.search, because #3617241 renders that exposed form inline on the results page instead. The views_exposed_filter_block:search-page plugin stops existing, and the generated component is left enabled with nothing behind it.

Nothing places the component, so no page renders a broken block and the install is unaffected. It is only ever visible in the component library.

Steps to reproduce

  1. Install the site template: drush site:install varbase installer_site_template_form.add_ons=varbase_starter.
  2. Load block.views_exposed_filter_block.search-page from the component storage. It is enabled, with active_version: 435ec28df1ef5629.
  3. Call checkRequirements() on its component source. It fails with AssertionError: views_exposed_filter_block:search-page, because the plugin is gone.

Proposed resolution

Disabling it from config.actions does not work. The disable action saves the entity, and validation rejects it on two counts once the plugin is missing:

active_version: The version 435ec28df1ef5629 does not match the hash of the settings for this version, expected 2d8c7ac16f90306b.
source_local_id: The 'views_exposed_filter_block:search-page' plugin does not exist.

The install fails outright when that action is added, so it was not taken in #3617456. Options worth weighing:

  • Ask Canvas for a way to remove or ignore a generated component whose source plugin has gone, since a recipe cannot reorder its own config actions ahead of component generation.
  • Leave it as is and document it, since nothing places the component and no rendered page is affected.

Remaining tasks

  • ✅ File an issue about this project
  • ❌ Addition/Change/Update/Fix to this project
  • ❌ Testing to ensure no regression
  • ➖ Automated unit/functional testing coverage
  • ➖ Developer Documentation support on feature change/addition
  • ➖ User Guide Documentation support on feature change/addition
  • ➖ UX/UI designer responsibilities
  • ➖ Accessibility and Readability
  • ❌ Reviewed by a human
  • ❌ Code review by maintainers
  • ❌ Full testing and approval
  • ❌ Credit contributors
  • ❌ Review with the product owner
  • ❌ Update Release Notes
  • ❌ Release

User interface changes

None on any rendered page. The component library lists one component that cannot be used.

API changes

N/A

Data model changes

N/A

Release notes snippet

N/A

Comments

rajab natshah created an issue.