Skip to content

Use of magento/module-async-config breaks backward compatibility #798

Description

@aleksandrpanshin-vaimo

Hello,

we have recently noticed that fastly/fastly-magento2 module silently added new dependency that breaks backward compatibility of the module: https://github.com/fastly/fastly-magento2/pull/785/changes#diff-a3cc35fae231bd148e38dd6394634a7f1ff1e0261bb6a94f90010aea3c031dc1R110

This line require magento/module-async-config to be installed, but it is only available since Magento 2.4.7 release, which makes Fastly module unusable on earlier releases.

Steps to Reproduce

  1. Have old Magento installation (I've tested on 2.4.5-p16)
  2. Install Fastly module with composer require fastly/magento
  3. Notice that 1.2.240 version of the module is installe successfuly
  4. Go to Admin Store Configuration page
  5. Try to save config

See the following stack trace:

Error: Class "Magento\AsyncConfig\Setup\ConfigOptionsList" not found in /var/www/html/vendor/fastly/magento2/Model/Config/ConfigRewrite.php:110
Stack trace:
#0 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(146): Fastly\Cdn\Model\Config\ConfigRewrite->afterSave(Object(Magento\Config\Model\Config\Interceptor), Object(Magento\Config\Model\Config\Interceptor))
#1 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Config\Model\Config\Interceptor->Magento\Framework\Interception\{closure}()
#2 /var/www/html/generated/code/Magento/Config/Model/Config/Interceptor.php(23): Magento\Config\Model\Config\Interceptor->___callPlugins('save', Array, NULL)
#3 /var/www/html/vendor/magento/module-config/Controller/Adminhtml/System/Config/Save.php(226): Magento\Config\Model\Config\Interceptor->save()
#4 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Config\Controller\Adminhtml\System\Config\Save->execute()
#5 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor->___callParent('execute', Array)
#6 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor->Magento\Framework\Interception\{closure}()
#7 /var/www/html/generated/code/Magento/Config/Controller/Adminhtml/System/Config/Save/Interceptor.php(23): Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor->___callPlugins('execute', Array, Array)
#8 /var/www/html/vendor/magento/framework/App/Action/Action.php(111): Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor->execute()
#9 /var/www/html/vendor/magento/module-backend/App/AbstractAction.php(151): Magento\Framework\App\Action\Action->dispatch(Object(Magento\Framework\App\Request\Http))
#10 /var/www/html/vendor/magento/module-config/Controller/Adminhtml/System/AbstractConfig.php(69): Magento\Backend\App\AbstractAction->dispatch(Object(Magento\Framework\App\Request\Http))
#11 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Config\Controller\Adminhtml\System\AbstractConfig->dispatch(Object(Magento\Framework\App\Request\Http))
#12 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor->___callParent('dispatch', Array)
#13 /var/www/html/vendor/magento/module-backend/App/Action/Plugin/Authentication.php(145): Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#14 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(135): Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch(Object(Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#15 /var/www/html/vendor/webkul/module-marketplace/src/app/code/Webkul/Marketplace/Plugin/App/Action/Context.php(56): Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#16 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(135): Webkul\Marketplace\Plugin\App\Action\Context->aroundDispatch(Object(Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#17 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#18 /var/www/html/generated/code/Magento/Config/Controller/Adminhtml/System/Config/Save/Interceptor.php(32): Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor->___callPlugins('dispatch', Array, Array)
#19 /var/www/html/vendor/magento/framework/App/FrontController.php(245): Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#20 /var/www/html/vendor/magento/framework/App/FrontController.php(212): Magento\Framework\App\FrontController->getActionResponse(Object(Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor), Object(Magento\Framework\App\Request\Http))
#21 /var/www/html/vendor/magento/framework/App/FrontController.php(147): Magento\Framework\App\FrontController->processRequest(Object(Magento\Framework\App\Request\Http), Object(Magento\Config\Controller\Adminhtml\System\Config\Save\Interceptor))
#22 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\App\FrontController->dispatch(Object(Magento\Framework\App\Request\Http))
#23 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', Array)
#24 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#25 /var/www/html/generated/code/Magento/Framework/App/FrontController/Interceptor.php(23): Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', Array, Array)
#26 /var/www/html/vendor/magento/framework/App/Http.php(116): Magento\Framework\App\FrontController\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#27 /var/www/html/generated/code/Magento/Framework/App/Http/Interceptor.php(23): Magento\Framework\App\Http->launch()
#28 /var/www/html/vendor/magento/framework/App/Bootstrap.php(264): Magento\Framework\App\Http\Interceptor->launch()
#29 /var/www/html/pub/index.php(30): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))
#30 {main}

Workaround

Downgrade Fastly module to 1.2.236 version

composer require fastly/magento2:1.2.236

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions