Skip to content

Disabling async email sending using cli when pending emails in queue causes an error #17673

Open
@hostep

Description

@hostep

Preconditions

  1. Magento 2.2.5
  2. PHP 7.0.31

Steps to reproduce

  1. Make sure no cronjobs are active
  2. Setup a clean Magento 2.2.5 installation (using composer)
  3. Run bin/magento config:set sales_email/general/async_sending 1
  4. In the backend, create a product
  5. Flush caches
  6. In the frontend, put the created product in your shopping cart, and go through the checkout so you have an order
  7. Since async sales emails sending is enabled, there is now one email in the queue to be send
  8. Now disable async sending, which will also trigger that the pending emails get send: bin/magento config:set sales_email/general/async_sending 0

Expected result

  1. Pending emails get send
  2. Async setting gets disabled
  3. No errors

Actual result

  1. No pending emails get send
  2. Async setting doesn't get disabled
  3. See error: Required parameter 'theme_dir' was not passed

Additional

  1. I'm pretty convinced this used to work in an earlier version of Magento, but will have to do some more testing to see exactly where it worked and where it got broken.
  2. Stack trace, should this be helpful:
#0  Magento\Framework\View\Design\Fallback\Rule\Simple->getPatternDirs() called at [vendor/magento/framework/View/Design/Fallback/Rule/Theme.php:78]
#1  Magento\Framework\View\Design\Fallback\Rule\Theme->getPatternDirs() called at [vendor/magento/framework/View/Design/Fallback/Rule/Composite.php:48]
#2  Magento\Framework\View\Design\Fallback\Rule\Composite->getPatternDirs() called at [vendor/magento/framework/View/Design/Fallback/Rule/ModularSwitch.php:50]
#3  Magento\Framework\View\Design\Fallback\Rule\ModularSwitch->getPatternDirs() called at [vendor/magento/framework/View/Design/FileResolution/Fallback/Resolver/Simple.php:124]
#4  Magento\Framework\View\Design\FileResolution\Fallback\Resolver\Simple->resolveFile() called at [vendor/magento/framework/View/Design/FileResolution/Fallback/Resolver/Simple.php:66]
#5  Magento\Framework\View\Design\FileResolution\Fallback\Resolver\Simple->resolve() called at [vendor/magento/framework/View/Design/FileResolution/Fallback/File.php:42]
#6  Magento\Framework\View\Design\FileResolution\Fallback\File->getFile() called at [vendor/magento/framework/View/Design/FileResolution/Fallback/TemplateFile.php:82]
#7  Magento\Framework\View\Design\FileResolution\Fallback\TemplateFile->getFile() called at [vendor/magento/framework/View/FileSystem.php:125]
#8  Magento\Framework\View\FileSystem->getTemplateFileName() called at [vendor/magento/framework/View/Element/Template/File/Resolver.php:61]
#9  Magento\Framework\View\Element\Template\File\Resolver->getTemplateFileName() called at [vendor/magento/framework/View/Element/Template.php:221]
#10 Magento\Framework\View\Element\Template->getTemplateFile() called at [vendor/magento/framework/View/Element/Template.php:300]
#11 Magento\Framework\View\Element\Template->_toHtml() called at [vendor/magento/framework/View/Element/AbstractBlock.php:667]
#12 Magento\Framework\View\Element\AbstractBlock->toHtml() called at [vendor/magento/module-payment/Helper/Data.php:218]
#13 Magento\Payment\Helper\Data->getInfoBlockHtml() called at [generated/code/Magento/Payment/Helper/Data/Interceptor.php:76]
#14 Magento\Payment\Helper\Data\Interceptor->getInfoBlockHtml() called at [vendor/magento/module-sales/Model/Order/Email/Sender/OrderSender.php:155]
#15 Magento\Sales\Model\Order\Email\Sender\OrderSender->getPaymentHtml() called at [vendor/magento/module-sales/Model/Order/Email/Sender/OrderSender.php:128]
#16 Magento\Sales\Model\Order\Email\Sender\OrderSender->prepareTemplate() called at [vendor/magento/module-sales/Model/Order/Email/Sender.php:77]
#17 Magento\Sales\Model\Order\Email\Sender->checkAndSend() called at [vendor/magento/module-sales/Model/Order/Email/Sender/OrderSender.php:102]
#18 Magento\Sales\Model\Order\Email\Sender\OrderSender->send() called at [vendor/magento/module-sales/Model/EmailSenderHandler.php:74]
#19 Magento\Sales\Model\EmailSenderHandler->sendEmails() called at [vendor/magento/module-sales/Observer/Virtual/SendEmails.php:50]
#20 Magento\Sales\Observer\Virtual\SendEmails->execute() called at [vendor/magento/framework/Event/Invoker/InvokerDefault.php:72]
#21 Magento\Framework\Event\Invoker\InvokerDefault->_callObserverMethod() called at [vendor/magento/framework/Event/Invoker/InvokerDefault.php:60]
#22 Magento\Framework\Event\Invoker\InvokerDefault->dispatch() called at [vendor/magento/framework/Event/Manager.php:66]
#23 Magento\Framework\Event\Manager->dispatch() called at [generated/code/Magento/Framework/Event/Manager/Proxy.php:95]
#24 Magento\Framework\Event\Manager\Proxy->dispatch() called at [vendor/magento/module-sales/Model/Config/Backend/Email/AsyncSending.php:32]
#25 Magento\Sales\Model\Config\Backend\Email\AsyncSending->afterSave() called at [vendor/magento/framework/Interception/Interceptor.php:58]
#26 Magento\Sales\Model\Config\Backend\Email\AsyncSending\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
#27 Magento\Sales\Model\Config\Backend\Email\AsyncSending\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
#28 Magento\Sales\Model\Config\Backend\Email\AsyncSending\Interceptor->___callPlugins() called at [generated/code/Magento/Sales/Model/Config/Backend/Email/AsyncSending/Interceptor.php:26]
#29 Magento\Sales\Model\Config\Backend\Email\AsyncSending\Interceptor->afterSave() called at [vendor/magento/framework/Model/ResourceModel/Db/AbstractDb.php:832]
#30 Magento\Framework\Model\ResourceModel\Db\AbstractDb->processAfterSaves() called at [vendor/magento/framework/Model/ResourceModel/Db/AbstractDb.php:418]
#31 Magento\Framework\Model\ResourceModel\Db\AbstractDb->save() called at [vendor/magento/module-config/Console/Command/ConfigSet/DefaultProcessor.php:85]
#32 Magento\Config\Console\Command\ConfigSet\DefaultProcessor->process() called at [vendor/magento/module-config/Console/Command/ConfigSet/ProcessorFacade.php:156]
#33 Magento\Config\Console\Command\ConfigSet\ProcessorFacade->processWithLockTarget() called at [vendor/magento/module-config/Console/Command/ConfigSetCommand.php:182]
#34 Magento\Config\Console\Command\ConfigSetCommand->Magento\Config\Console\Command\{closure}()
#35 call_user_func_array() called at [vendor/magento/module-config/Console/Command/EmulatedAdminhtmlAreaProcessor.php:59]
#36 Magento\Config\Console\Command\EmulatedAdminhtmlAreaProcessor->Magento\Config\Console\Command\{closure}()
#37 call_user_func_array() called at [vendor/magento/framework/App/State.php:186]
#38 Magento\Framework\App\State->emulateAreaCode() called at [vendor/magento/module-config/Console/Command/EmulatedAdminhtmlAreaProcessor.php:60]
#39 Magento\Config\Console\Command\EmulatedAdminhtmlAreaProcessor->process() called at [vendor/magento/module-config/Console/Command/ConfigSetCommand.php:184]
#40 Magento\Config\Console\Command\ConfigSetCommand->execute() called at [vendor/symfony/console/Command/Command.php:241]
#41 Symfony\Component\Console\Command\Command->run() called at [vendor/symfony/console/Application.php:843]
#42 Symfony\Component\Console\Application->doRunCommand() called at [vendor/symfony/console/Application.php:193]
#43 Symfony\Component\Console\Application->doRun() called at [vendor/magento/framework/Console/Cli.php:104]
#44 Magento\Framework\Console\Cli->doRun() called at [vendor/symfony/console/Application.php:117]
#45 Symfony\Component\Console\Application->run() called at [bin/magento:23]

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions