dotmailer / dotmailer-magento2-extension

The official Dotdigital for Magento2 extension
https://dotdigital.com/integrations/magento
MIT License
48 stars 63 forks source link

Topic "ddg.newsletter.subscribe" is not configured #632

Closed fsesini-avery closed 1 month ago

fsesini-avery commented 1 month ago

Hello,

We've recently upgraded from v4.21.5 to v4.26.0 - our Magento version is 2.4.5-p8. Ever since the upgrade, we're experiencing issues on the checkout page, when attempting to place an order, the error message Topic "ddg.newsletter.subscribe" is not configured. pops up. This isn't happening every time; my assumption is, from a quick dive in the code, that this only happens for users who are already subscribed.

Here is the full error from the logs:

main.CRITICAL: Magento\Framework\Exception\LocalizedException: Topic "ddg.newsletter.subscribe" is not configured. in /vendor/magento/framework/Communication/Config.php:39
Stack trace:
#0 /vendor/magento/framework-message-queue/PublisherPool.php(84): Magento\Framework\Communication\Config->getTopic()
#1 /vendor/dotdigital/dotdigital-magento2-extension/Observer/Sales/OrderSaveAfter.php(284): Magento\Framework\MessageQueue\PublisherPool->publish()
#2 /vendor/dotdigital/dotdigital-magento2-extension/Observer/Sales/OrderSaveAfter.php(228): Dotdigitalgroup\Email\Observer\Sales\OrderSaveAfter->resetContact()
#3 /vendor/magento/framework/Event/Invoker/InvokerDefault.php(88): Dotdigitalgroup\Email\Observer\Sales\OrderSaveAfter->execute()
#4 /vendor/magento/framework/Event/Invoker/InvokerDefault.php(74): Magento\Framework\Event\Invoker\InvokerDefault->_callObserverMethod()
#5 /vendor/magento/framework/Event/Manager.php(65): Magento\Framework\Event\Invoker\InvokerDefault->dispatch()
#6 /generated/code/Magento/Framework/Event/Manager/Proxy.php(95): Magento\Framework\Event\Manager->dispatch()
#7 /vendor/magento/framework/Model/AbstractModel.php(832): Magento\Framework\Event\Manager\Proxy->dispatch()
#8 /vendor/magento/framework/Model/ResourceModel/Db/VersionControl/AbstractDb.php(56): Magento\Framework\Model\AbstractModel->afterSave()
#9 /vendor/magento/framework/Model/ResourceModel/Db/AbstractDb.php(402): Magento\Framework\Model\ResourceModel\Db\VersionControl\AbstractDb->processAfterSaves()
#10 /vendor/magento/module-sales/Model/ResourceModel/Order.php(180): Magento\Framework\Model\ResourceModel\Db\AbstractDb->save()
#11 /vendor/magento/framework/Interception/Interceptor.php(58): Magento\Sales\Model\ResourceModel\Order->save()
#12 /vendor/magento/framework/Interception/Interceptor.php(138): Magento\Sales\Model\ResourceModel\Order\Interceptor->___callParent()
#13 /vendor/magento/framework/Interception/Interceptor.php(153): Magento\Sales\Model\ResourceModel\Order\Interceptor->Magento\Framework\Interception\{closure}()
#14 /generated/code/Magento/Sales/Model/ResourceModel/Order/Interceptor.php(23): Magento\Sales\Model\ResourceModel\Order\Interceptor->___callPlugins()
#15 /vendor/magento/module-sales/Model/OrderRepository.php(282): Magento\Sales\Model\ResourceModel\Order\Interceptor->save()
#16 /vendor/magento/framework/Interception/Interceptor.php(58): Magento\Sales\Model\OrderRepository->save()
#17 /vendor/magento/framework/Interception/Interceptor.php(138): Magento\Sales\Model\OrderRepository\Interceptor->___callParent()
#18 /vendor/magento/framework/Interception/Interceptor.php(153): Magento\Sales\Model\OrderRepository\Interceptor->Magento\Framework\Interception\{closure}()
#19 /generated/code/Magento/Sales/Model/OrderRepository/Interceptor.php(50): Magento\Sales\Model\OrderRepository\Interceptor->___callPlugins()
#20 /vendor/magento/module-sales/Model/ShipOrder.php(231): Magento\Sales\Model\OrderRepository\Interceptor->save()
#21 /vendor/magento/module-sales/Model/OrderMutex.php(45): Magento\Sales\Model\ShipOrder->createShipment()
#22 /vendor/magento/module-sales/Model/ShipOrder.php(163): Magento\Sales\Model\OrderMutex->execute()
#23 [internal function]: Magento\Sales\Model\ShipOrder->execute()
#24 /vendor/magento/module-webapi/Controller/Rest/SynchronousRequestProcessor.php(95): call_user_func_array()
#25 /vendor/magento/module-webapi/Controller/Rest.php(195): Magento\Webapi\Controller\Rest\SynchronousRequestProcessor->process()
#26 /vendor/magento/framework/Interception/Interceptor.php(58): Magento\Webapi\Controller\Rest->dispatch()
#27 /vendor/magento/framework/Interception/Interceptor.php(138): Magento\Webapi\Controller\Rest\Interceptor->___callParent()
#28 /vendor/magento/framework/Interception/Interceptor.php(153): Magento\Webapi\Controller\Rest\Interceptor->Magento\Framework\Interception\{closure}()
#29 /generated/code/Magento/Webapi/Controller/Rest/Interceptor.php(23): Magento\Webapi\Controller\Rest\Interceptor->___callPlugins()
#30 /vendor/magento/framework/App/Http.php(116): Magento\Webapi\Controller\Rest\Interceptor->dispatch()
#31 /vendor/magento/framework/App/Bootstrap.php(264): Magento\Framework\App\Http->launch()
#32 /pub/index.php(30): Magento\Framework\App\Bootstrap->run()
#33 {main} [] []

From a quick look at dotdigital/dotdigital-magento2-extension/Observer/Sales/OrderSaveAfter.php, it seems like the queue publisher being called on line 284 "ddg.newsletter.subscribe" hasn't actually been defined anywhere. There is a "subscription" publisher, as well as "resubscribe" and "unsuscribe", but I couldn't find any other mention of "subscribe". Could you advise on whether this is an issue on the extension's end, or if I should dig deeper on our side?

Thank you!

pvpcookie commented 1 month ago

Hi @fsesini-avery,

Thank you for bringing this up. We have a fix that should be released within the week. please see https://github.com/dotmailer/dotmailer-magento2-extension/blob/master/Observer/Sales/OrderSaveAfter.php#L284-L285

fsesini-avery commented 1 month ago

Hi @pvpcookie,

Great, thank you for letting me know!

sta1r commented 1 month ago

Fixed in https://github.com/dotmailer/dotmailer-magento2-extension/releases/tag/v4.26.2 (and in latest metapackage from Adobe).