View Issue Details

IDProjectCategoryView StatusLast Update
0007705OXID eShop (all versions)6. ------ Setup -------public2024-10-30 07:47
Reportermario_lorenz Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
Product Version7.1.0 
Summary0007705: After updating from OXID7.0 EE to OXID 7.1 EE maintenance mode due to errors in module dependencies
Description* Goal: Update an OXID7.0 EE to OXID7.1 EE
* In the old 7.0 EE, the modules ddoevisualcms and ddoemedialibrary are active
* Update is carried out by adjusting the version in the composer.json to: "oxid-esales/oxideshop-metapackage-ee": "v7.1.0"
* then composer update
* Now the shop is in maintenance mode

Problem:

"Composer update" installs the new module ddoemedialibrary as well as the latest versions of ddoevisualcms and ddoemedialibrary.

OXID7.1 has the new feature of module dependencies. The modules ddoevisualcms and ddoemedialibrary can no longer be activated if the module ddoemedialibrary has not yet been activated.
"Composer update" does not check these dependencies and simply installs a "deactivated" ddoemedialibrary.
Since the shop is now no longer functional via the frontend/backend or the console, the only option is to make a manual correction in two places:
* var/configuration/shops/1/modules/ddoemedialibrary.yaml -> Set the module to "active"
* var/configuration/shops/1/active_module_services.yaml -> Add a line for ddoemedialibrary here based on the existing files. In my case, this was:
resource: /var/www/html/vendor/oxid-esales/media-library-module/services.yaml
* The shop then works again.
Steps To ReproducePreparation
* Classic installation of an OXID 7.0 EE
* activate: ddoevisualcms and ddoemedialibrary

Actual error reproduction
* Adjust version in composer.json to: "oxid-esales/oxideshop-metapackage-ee": "v7.1.0"
* cmd: composer update

Afterwards, maintenance mode + oe-console are no longer accessible.
The note in oxideshop.log:

[2024-08-08 14:10:25] OXID Logger.ERROR: Cannot autowire service "OxidEsales\VisualCmsModule\ShortCode\Action": argument "$response" of method "__construct()" references interface "OxidEsales\MediaLibrary\Transput\ResponseInterface" but no such service exists. Did you create a class that implements this interface? ["[object] (Symfony\\Component\\DependencyInjection\\Exception\\RuntimeException(code: 0): Cannot autowire service \"OxidEsales\\VisualCmsModule\\ShortCode\\Action\": argument \"$response\" of method \"__construct()\" references interface face\" but no such service exists. Did you create a class that implements this interface? at /var/www/html/vendor/symfony/dependency-injection/Compiler/DefinitionErrorExceptionPass.php:51)\n[stacktrace]\n#0 /var/www/html/vendor/symfony/dependency-injection/Compiler/Compiler.php(80): Symfony\\Component\\DependencyInjection\\Compiler\\DefinitionErrorExceptionPass->process(Object(Symfony\\Component\\DependencyInjection\\ContainerBuilder))\n#1 /var/www/html/vendor/symfony/dependency-injection/ContainerBuilder.php(767): \Compiler->compile(Object(Symfony\\Component\\DependencyInjection\\ContainerBuilder))\n#2 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(78): Symfony\\Component\\DependencyInjection\\ContainerBuilder->compile(true)\n#3 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(69): OxidEsales\\EshopCommunity\\Internal\\Container\\ContainerFactory->getCompiledSymfonyContainer()\n#4 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(52): OxidEsales\\EshopCommunity\\Internal\\Container\\ContainerFactory->initializeContainer()\n#5 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Di/ContainerFacade.php(37): OxidEsales\\EshopCommunity\\Internal\\Container\\ContainerFactory->getContainer()\n#6 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Module/ModuleVariablesLocator.php(156): OxidEsales\\EshopCommunity\\Core\\Di\\ContainerFacade::get('OxidEsales\\\\Es ho...')\n#7 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Module/ModuleVariablesLocator.php(60): OxidEsales\\EshopCommunity\\Core\\Module\\ModuleVariablesLocator->getClassExtensionsChain()\n#8 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Autoload/ModuleAutoload.php(99): OxidEsales\\EshopCommunity\\Core\\Module\\ModuleVariablesLocator->getModuleVariable('aModules')\n#9 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Autoload/ModuleAutoload. php(72): OxidEsales\\EshopCommunity\\Core\\Autoload\\ModuleAutoload->createExtensionClassChain('allowdynamicpro...')\n#10 [internal function]: OxidEsales\\EshopCommunity\\Core\\Autoload\\ModuleAutoload::autoload('allowdynamicpro...')\n#11 /var/www/html/vendor/symfony/dependency-injection/Compiler/AutowireAsDecoratorPass.php(40): ReflectionClass->getAttributes('Symfony\\\\Compone...', 2)\n#12 /var/www/html/vendor/symfony/dependency-injection/Compiler/AutowireAsDecoratorPass.php(28): Symfony\\Component\\Depen dencyInjection\\Compiler\\AutowireAsDecoratorPass->processClass(Object(Symfony\\Component\\DependencyInjection\\Definition), Object(ReflectionClass))\n#13 /var/www/html/vendor/symfony/dependency-injection/Compiler/Compiler.php(80): Symfony\\Component\\DependencyInjection\\Compiler\\AutowireAsDecoratorPass->process(Object(Symfony\\Component\\DependencyInjection\\ContainerBuilder))\n#14 /var/www/html/vendor/symfony/dependency-injection/ContainerBuilder.php(767): Symfony\\Component\\DependencyInjection\\Compiler\ \Compiler->compile(Object(Symfony\\Component\\DependencyInjection\\ContainerBuilder))\n#15 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/BootstrapContainerFactory.php(25): Symfony\\Component\\DependencyInjection\\ContainerBuilder->compile()\n#16 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerBuilderFactory.php(24): OxidEsales\\EshopCommunity\\Internal\\Container\\BootstrapContainerFactory::getBootstrapContainer()\n#17 / var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(76): OxidEsales\\EshopCommunity\\Internal\\Container\\ContainerBuilderFactory->create()\n#18 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(69): OxidEsales\\EshopCommunity\\Internal\\Container\\ContainerFactory->getCompiledSymfonyContainer()\n#19 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(52)
Additional InformationSolution:

In any case, the problem should be described here:
https://docs.oxid-esales.com/developer/en/7.1/update/eshop_from_65_to_7/update-to-7.1.html

The clean solution would have been:
* Before the "composer update", deactivate the two modules ddoevisualcms and ddoemedialibrary
* After the "composer update", reactivate the three modules in the correct order.

In the description above, the "ddoemedialibrary" should only serve as an example, because this problem can affect any other module that works with dependencies in the future.
TagsNo tags attached.
ThemeNot defined
BrowserNot defined
PHP VersionNot defined
Database VersionNot defined

Activities

QA

2024-08-08 16:30

administrator   ~0017385

Last edited: 2024-08-09 11:06

It's interesting since we usually suggest it anyway to deactivate all modules. E.g. see here: https://docs.oxid-esales.com/developer/en/7.1/update/minor-update.html#:~:text=Deactivate%20all%20modules.

There's already a PR containing the hint to deactivate all modules:
https://github.com/OXID-eSales/developer_documentation/pull/112

But thanks for the hint anyway.

[sp]

SvenBrunk

2024-10-30 07:47

administrator   ~0017648

Last edited: 2024-10-30 07:47

The PR has been merged. Info now shows on https://docs.oxid-esales.com/developer/en/7.1/update/eshop_from_65_to_7/update-to-7.1.html