Problem/Motivation

The Support for automatic entity updates has been removed
https://www.drupal.org/node/3034742

Not able to save new Carousel blocks ( A responsive and easy to customize slider block. )

Steps to reproduce

Given that a landing page was created using the layout builder
When a new Carousel inline block added to a section
Then the carousel block will show up in the review while editing the layout for the page
Varbase Carousel block in the layout builder
When the page is saved
Then the following error will show up


The website encountered an unexpected error. Please try again later.

Drupal\Core\Entity\EntityStorageException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'field_media_carousel_slide_target_id' in 'field list': INSERT INTO "block_content_r__e3b0c44298" ("entity_id", "revision_id", "bundle", "delta", "langcode", "field_media_carousel_slide_target_id") VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5), (:db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11), (:db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14, :db_insert_placeholder_15, :db_insert_placeholder_16, :db_insert_placeholder_17), (:db_insert_placeholder_18, :db_insert_placeholder_19, :db_insert_placeholder_20, :db_insert_placeholder_21, :db_insert_placeholder_22, :db_insert_placeholder_23), (:db_insert_placeholder_24, :db_insert_placeholder_25, :db_insert_placeholder_26, :db_insert_placeholder_27, :db_insert_placeholder_28, :db_insert_placeholder_29), (:db_insert_placeholder_30, :db_insert_placeholder_31, :db_insert_placeholder_32, :db_insert_placeholder_33, :db_insert_placeholder_34, :db_insert_placeholder_35); Array ( [:db_insert_placeholder_0] => 112 [:db_insert_placeholder_1] => 141 [:db_insert_placeholder_2] => varbase_carousel_block [:db_insert_placeholder_3] => 0 [:db_insert_placeholder_4] => en [:db_insert_placeholder_5] => 43 [:db_insert_placeholder_6] => 112 [:db_insert_placeholder_7] => 141 [:db_insert_placeholder_8] => varbase_carousel_block [:db_insert_placeholder_9] => 1 [:db_insert_placeholder_10] => en [:db_insert_placeholder_11] => 44 [:db_insert_placeholder_12] => 112 [:db_insert_placeholder_13] => 141 [:db_insert_placeholder_14] => varbase_carousel_block [:db_insert_placeholder_15] => 2 [:db_insert_placeholder_16] => en [:db_insert_placeholder_17] => 45 [:db_insert_placeholder_18] => 112 [:db_insert_placeholder_19] => 141 [:db_insert_placeholder_20] => varbase_carousel_block [:db_insert_placeholder_21] => 3 [:db_insert_placeholder_22] => en [:db_insert_placeholder_23] => 46 [:db_insert_placeholder_24] => 112 [:db_insert_placeholder_25] => 141 [:db_insert_placeholder_26] => varbase_carousel_block [:db_insert_placeholder_27] => 4 [:db_insert_placeholder_28] => en [:db_insert_placeholder_29] => 47 [:db_insert_placeholder_30] => 112 [:db_insert_placeholder_31] => 141 [:db_insert_placeholder_32] => varbase_carousel_block [:db_insert_placeholder_33] => 5 [:db_insert_placeholder_34] => en [:db_insert_placeholder_35] => 48 ) in Drupal\Core\Entity\Sql\SqlContentEntityStorage->save() (line 810 of core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php).
Drupal\Core\Database\StatementWrapper->execute(Array, Array) (Line: 874)
Drupal\Core\Database\Connection->query('INSERT INTO {block_content_r__e3b0c44298} ("entity_id", "revision_id", "bundle", "delta", "langcode", "field_media_carousel_slide_target_id") VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5), (:db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11), (:db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14, :db_insert_placeholder_15, :db_insert_placeholder_16, :db_insert_placeholder_17), (:db_insert_placeholder_18, :db_insert_placeholder_19, :db_insert_placeholder_20, :db_insert_placeholder_21, :db_insert_placeholder_22, :db_insert_placeholder_23), (:db_insert_placeholder_24, :db_insert_placeholder_25, :db_insert_placeholder_26, :db_insert_placeholder_27, :db_insert_placeholder_28, :db_insert_placeholder_29), (:db_insert_placeholder_30, :db_insert_placeholder_31, :db_insert_placeholder_32, :db_insert_placeholder_33, :db_insert_placeholder_34, :db_insert_placeholder_35)', Array, Array) (Line: 32)
Drupal\Core\Database\Driver\mysql\Insert->execute() (Line: 1378)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->saveToDedicatedTables(Object, , Array) (Line: 960)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doSaveFieldItems(Object) (Line: 622)
Drupal\Core\Entity\ContentEntityStorageBase->doSave(NULL, Object) (Line: 452)
Drupal\Core\Entity\EntityStorageBase->save(Object) (Line: 801)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->save(Object) (Line: 339)
Drupal\Core\Entity\EntityBase->save() (Line: 291)
Drupal\layout_builder\Plugin\Block\InlineBlock->saveBlockContent(1, ) (Line: 255)
Drupal\layout_builder\InlineBlockEntityOperations->saveInlineBlockComponent(Object, Object, 1, ) (Line: 171)
Drupal\layout_builder\InlineBlockEntityOperations->handlePreSave(Object) (Line: 206)
layout_builder_entity_presave(Object)
call_user_func_array('layout_builder_entity_presave', Array) (Line: 403)
Drupal\Core\Extension\ModuleHandler->invokeAll('entity_presave', Array) (Line: 201)
Drupal\Core\Entity\EntityStorageBase->invokeHook('presave', Object) (Line: 800)
Drupal\Core\Entity\ContentEntityStorageBase->invokeHook('presave', Object) (Line: 495)
Drupal\Core\Entity\EntityStorageBase->doPreSave(Object) (Line: 657)
Drupal\Core\Entity\ContentEntityStorageBase->doPreSave(Object) (Line: 449)
Drupal\Core\Entity\EntityStorageBase->save(Object) (Line: 801)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->save(Object) (Line: 339)
Drupal\Core\Entity\EntityBase->save() (Line: 285)
Drupal\Core\Entity\EntityForm->save(Array, Object) (Line: 177)
Drupal\layout_builder\Form\OverridesEntityForm->save(Array, Object)
call_user_func_array(Array, Array) (Line: 113)
Drupal\Core\Form\FormSubmitter->executeSubmitHandlers(Array, Object) (Line: 51)
Drupal\Core\Form\FormSubmitter->doSubmitForm(Array, Object) (Line: 593)
Drupal\Core\Form\FormBuilder->processForm('node_landing_page_lb_layout_builder_form', Array, Object) (Line: 321)
Drupal\Core\Form\FormBuilder->buildForm(Object, Object) (Line: 73)
Drupal\Core\Controller\FormController->getContentResult(Object, Object) (Line: 39)
Drupal\layout_builder\Controller\LayoutBuilderHtmlEntityFormController->getContentResult(Object, Object)
call_user_func_array(Array, Array) (Line: 123)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 578)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 124)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) (Line: 97)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 158)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 80)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 67)
Drupal\simple_oauth\HttpMiddleware\BasicAuthSwap->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 106)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 716)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)

Proposed resolution

#3232568: Switch Varbase Entity Definition Update Manager class to extend the vardot/entity-definition-update-manager class library
#3232617: Switch Varbase Media to use Entity Definition Update Manager class from vardot/entity-definition-update-manager class library

Fix the entity mismatch on install and update

  // Entity updates to clear up any mismatched entity and/or field definitions
  // And Fix changes were detected in the entity type and field definitions.
  \Drupal::classResolver()
    ->getInstanceFromDefinition(VarbaseEntityDefinitionUpdateManager::class)
    ->applyUpdates();

Remaining tasks

  • ✅ File an issue about this project
  • ✅ Fix the entity mismatch on install and update
  • ✅ 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
  • ✅ Code review from 1 Varbase core team member
  • ✅ Full testing and approval
  • ✅ Credit contributors
  • ✅ Review with the product owner
  • ✅ Release varbase-9.0.2, varbase_carousels-9.0.1

User interface changes

  • Be able to save inline Carousel blocks
  • Be able to save custom Carousel blocks

API changes

  • None

Data model changes

  • None

Comments

RajabNatshah created an issue. See original summary.

rajab natshah’s picture

Issue summary: View changes
rajab natshah’s picture

rajab natshah’s picture

rajab natshah’s picture

rajab natshah’s picture

rajab natshah’s picture

Assigned: rajab natshah » Unassigned
Status: Active » Needs work
Issue tags: +varbase-backlog
rajab natshah’s picture

Issue summary: View changes

  • RajabNatshah committed a0c6f52 on 9.0.x
    Issue #3222166: Fix Entity Storage Exception on Column not found: 1054...
rajab natshah’s picture

Assigned: rajab natshah » mohammed j. razem
Issue summary: View changes
Status: Active » Needs review
Issue tags: +varbase-9.0.2, +varbase_carousels-9.0.1
rajab natshah’s picture

Assigned: mohammed j. razem » Unassigned
rajab natshah’s picture

Assigned: Unassigned » rajab natshah
Status: Needs review » Active

Have a hook update to fix old installed instance

  • RajabNatshah committed 9cbc617 on 9.0.x
    Issue #3222166: Fix Entity Storage Exception on Column not found: 1054...
rajab natshah’s picture

Assigned: rajab natshah » Unassigned
Status: Active » Needs review
rajab natshah’s picture

Issue summary: View changes
Status: Needs review » Fixed
rajab natshah’s picture

Issue summary: View changes
rajab natshah’s picture

Issue summary: View changes

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.

rajab natshah’s picture

Issue summary: View changes
rajab natshah’s picture

Issue summary: View changes
rajab natshah’s picture

Issue summary: View changes