3

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)

0

Oh dear, I found it. With the update, I've removed the module magento/module-url-rewrite-import-export because Magento yet has to release a version that's compatible with Magento 2.3

This module came with a queue. On the live system, this queue configuration was still present:

         "queue--url_rewrite_import--url.rewrite.import" => [
           "id" => "queue--url_rewrite_import--url.rewrite.import",
           "destinationType" => "queue",
           "destination" => "url_rewrite_import",
           "disabled" => false,
           "topic" => "url.rewrite.import",
           "arguments" => [],
         ],

Apparently still when setup:upgrade was executed during deployment. But the configuration for its "topic" was not found anymore.

Still unclear: Why is that queue configuration present? At that point, we operate on the new code and the cache has been flushed.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.