fbpx

Magento 2

SwissUpLabs themes and plugins for Magento 2? Stay away

by , , revisited on


We have by far the largest RPM repository with NGINX module packages and VMODs for Varnish. If you want to install NGINX, Varnish, and lots of useful performance/security software with smooth yum upgrades for production use, this is the repository for you.
Active subscription is required.

About Argento theme

The Argento theme by SwissUp Labs is one of the most popular themes for Magento 2.
It comes with a bunch of modules, including some for SEO purposes.

Should you use it? Now there is a big reason to say no. And here is why.

The disgraceful bug

There is a hidden disgrace with Argento products: a bug within SEO modules causes a continuous flush of your cache.

These modules are NOT PRODUCTION READY at all because they were poorly tested and allow for issues like this to exist.

Discovered in October 2019, their SEO module is responsible for flushing the FPC cache.

The discovery was possible thanks to Full Page Cache Warmer‘s log features,
which allow pinpointing modules responsible for clearing caches.

At the bottom of this post, you can find the relevant entry from cache warmer’s flush log which shows the issue: in one of Swissup’s SEO templates module cron tasks, swissup_seotemplates_generate cron, there is flushCache function, which is being called on schedule. The Swissup support had nothing to comment on its purpose and only had to say that this will be fixed in the new versions.

Having SEO modules by Swissup Labs is a risk to serious performance problems.
Even if you haven’t configured those modules and only have them installed, the cache flush will regularly happen.

How to check if you’re affected

List all SEO modules using n98-magerun2, e.g. n98-magerun2 dev:module:list | grep --ignore-case seo.

If the output contains a number of Swissup modules, then you’re at risk of very poor performance, especially if your store is large and where it takes a long time to refill the entire cache.

| Swissup_SeoCanonical                                 | 0.0.1            |
| Swissup_SeoCore                                      | 0.0.1            |
| Swissup_SeoCrossLinks                                | 1.0.1            |
| Swissup_SeoHtmlSitemap                               | 1.0.0            |
| Swissup_SeoImages                                    | 1.1.0            |
| Swissup_SeoPager                                     | 0.0.1            |
| Swissup_SeoTemplates                                 | 1.0.0            |
| Swissup_SeoUrls                                      | 1.5.0            |
| Swissup_SeoXmlSitemap ...

The remedy

The solution is disabling the modules, or getting rid of poor quality theme altogether. To disable SEO modules by Swissup, you can use n98-magerun2:

n98-magerun2 module:disable Swissup_SeoCanonical \
  Swissup_SeoCore Swissup_SeoCrossLinks Swissup_SeoHtmlSitemap \
  Swissup_SeoImages Swissup_SeoPager Swissup_SeoTemplates \
  Swissup_SeoUrls Swissup_SeoXmlSitemap \
  Swissup_RichSnippets Swissup_Hreflang

Or, disable modules without downtime, using clearmage2:

clearmage2 --disable 'Swissup_Seo*,Swissup_RichSnippets,Swissup_Hreflang'

Your mileage might vary depending on different SEO modules you might have.

The cache clear log

[2019-10-24 02:00:07] CacheWarmerFlushLogger.DEBUG: Clean cache {"mode":"all","tags":[],"backtrace":"#1 Mirasvit\\CacheWarmer\\Service\\CacheCleanService#000000004e3975920000000061b3a83b#->logCacheClean() called at [app/code/Mirasvit/CacheWarmer/Preference/Framework/Cache/Frontend/Decorator/TagScopePreference.php:41]
#2 Mirasvit\\CacheWarmer\\Preference\\Framework\\Cache\\Frontend\\Decorator\\TagScopePreference#000000004e396ffe0000000061b3a83b#->clean() called at [vendor/magento/framework/Cache/Frontend/Decorator/Bare.php:91]
#3 Magento\\Framework\\Cache\\Frontend\\Decorator\\Logger[Magento\\Framework\\Cache\\Frontend\\Decorator\\Bare]#000000004e396ff10000000061b3a83b#->clean() called at [vendor/magento/framework/Cache/Frontend/Decorator/Logger.php:47]
#4 Magento\\Framework\\Cache\\Frontend\\Decorator\\Logger#000000004e396ff10000000061b3a83b#->clean() called at [vendor/swissup/module-seo-templates/Model/Cron.php:205]
#5 Swissup\\SeoTemplates\\Model\\Cron#000000004e3975680000000061b3a83b#->flushCache() called at [vendor/swissup/module-seo-templates/Model/Cron.php:193]
#6 Swissup\\SeoTemplates\\Model\\Cron#000000004e3975680000000061b3a83b#->setupGenerationJob() called at [vendor/swissup/module-seo-templates/Model/Cron.php:137]
#7 Swissup\\SeoTemplates\\Model\\Cron#000000004e3975680000000061b3a83b#->init()
#8 call_user_func_array() called at [vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:317]
#9 Magento\\Cron\\Observer\\ProcessCronQueueObserver\\Interceptor[Magento\\Cron\\Observer\\ProcessCronQueueObserver]#000000004e396f1a0000000061b3a83b#->_runJob() called at [vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:737]
#10 Magento\\Cron\\Observer\\ProcessCronQueueObserver\\Interceptor[Magento\\Cron\\Observer\\ProcessCronQueueObserver]#000000004e396f1a0000000061b3a83b#->processPendingJobs() called at [vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:243]
#11 Magento\\Cron\\Observer\\ProcessCronQueueObserver\\Interceptor[Magento\\Cron\\Observer\\ProcessCronQueueObserver]#000000004e396f1a0000000061b3a83b#->Magento\\Cron\\Observer\\{closure}() called at [vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:272]
#12 Magento\\Cron\\Observer\\ProcessCronQueueObserver\\Interceptor[Magento\\Cron\\Observer\\ProcessCronQueueObserver]#000000004e396f1a0000000061b3a83b#->lockGroup() called at [vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:244]
#13 Magento\\Cron\\Observer\\ProcessCronQueueObserver\\Interceptor[Magento\\Cron\\Observer\\ProcessCronQueueObserver]#000000004e396f1a0000000061b3a83b#->execute() called at [vendor/magento/framework/Interception/Interceptor.php:58]
#14 Magento\\Cron\\Observer\\ProcessCronQueueObserver\\Interceptor#000000004e396f1a0000000061b3a83b#->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
#15 Magento\\Cron\\Observer\\ProcessCronQueueObserver\\Interceptor#000000004e396f1a0000000061b3a83b#->Magento\\Framework\\Interception\\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
#16 Magento\\Cron\\Observer\\ProcessCronQueueObserver\\Interceptor#000000004e396f1a0000000061b3a83b#->___callPlugins() called at [generated/code/Magento/Cron/Observer/ProcessCronQueueObserver/Interceptor.php:26]
#17 Magento\\Cron\\Observer\\ProcessCronQueueObserver\\Interceptor#000000004e396f1a0000000061b3a83b#->execute() called at [vendor/magento/framework/Event/Invoker/InvokerDefault.php:72]
#18 Magento\\Framework\\Event\\Invoker\\InvokerDefault#000000004e396c050000000061b3a83b#->_callObserverMethod() called at [vendor/magento/framework/Event/Invoker/InvokerDefault.php:60]
#19 Magento\\Framework\\Event\\Invoker\\InvokerDefault#000000004e396c050000000061b3a83b#->dispatch() called at [vendor/magento/framework/Event/Manager.php:66]
#20 Magento\\Framework\\Event\\Manager#000000004e396c190000000061b3a83b#->dispatch() called at [generated/code/Magento/Framework/Event/Manager/Proxy.php:95]
#21 Magento\\Framework\\Event\\Manager\\Proxy#000000004e3963060000000061b3a83b#->dispatch() called at [vendor/magento/framework/App/Cron.php:86]
#22 Magento\\Framework\\App\\Cron#000000004e396c620000000061b3a83b#->launch() called at [vendor/magento/module-cron/Console/Command/CronCommand.php:117]
#23 Magento\\Cron\\Console\\Command\\CronCommand#000000004e39736a0000000061b3a83b#->execute() called at [vendor/symfony/console/Command/Command.php:255]
#24 Magento\\Cron\\Console\\Command\\CronCommand[Symfony\\Component\\Console\\Command\\Command]#000000004e39736a0000000061b3a83b#->run() called at [vendor/symfony/console/Application.php:893]
#25 Magento\\Framework\\Console\\Cli[Symfony\\Component\\Console\\Application]#000000004e3962130000000061b3a83b#->doRunCommand() called at [vendor/symfony/console/Application.php:262]
#26 Magento\\Framework\\Console\\Cli[Symfony\\Component\\Console\\Application]#000000004e3962130000000061b3a83b#->doRun() called at [vendor/magento/framework/Console/Cli.php:102]
#27 Magento\\Framework\\Console\\Cli#000000004e3962130000000061b3a83b#->doRun() called at [vendor/symfony/console/Application.php:145]
#28 Magento\\Framework\\Console\\Cli[Symfony\\Component\\Console\\Application]#000000004e3962130000000061b3a83b#->run() called at [bin/magento:23]

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.