While upgrading a 2.2.8 database to 2.3.2 I got this error today:
Schema post-updates:
Module 'Magento_Store':
Module 'Magento_Directory':
Module 'Magento_Theme':
Module 'Magento_Eav':
Module 'Magento_AdvancedPricingImportExport':
Module 'Magento_Rule':
Module 'Magento_Customer':
Module 'Magento_Amqp':
Error while checking if topic is synchronous
It must have something to do with environment configuration because on the same DB snapshot with the same code base, it worked on a test environment.
We do not use the Magento_Amqp module at all, so there is no AMQP configuration on either system.
I looked where the error message can be thrown and found:
\Magento\Framework\MessageQueue\Topology\Config\QueueConfigItem\DataMapper::isSynchronousTopic
which can be traced back to:
\Magento\Framework\MessageQueue\Topology\Config\QueueConfigItem\Iterator::__construct
And the exception is thrown if in
\Magento\Framework\Communication\Config::getTopic()
a configuration path (topics/$topicName
, from cache id communication_config_cache
) cannot be found.
But now I'm lost: Why should this configuration be present in one installation and not in the other? Or why would Magento look for the configuration at all during DB schema updates?
The output suggests, that the recurring schema update (\Magento\Amqp\Setup\Recurring
) of Magento_Amqp are not even started (No "Running schema recurring"), so I guess the error comes while instantiating it.
Trying to find a dependency path to the class from above, that throws the exception in its constructor:
\Magento\Framework\Amqp\TopologyInstaller
\Magento\Framework\MessageQueue\Topology\Config
\Magento\Framework\MessageQueue\Topology\Config\QueueConfigItem\Iterator
Yes! We have a trace. (but still no idea, why. I'll keep this updated)