On the admin UI it says that it last updated the last minute (every minute). So it's updating every minute, but, the execute method is not called and I don't see my table in the database changing.

Here's my indexer.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Indexer/etc/indexer.xsd">
  <indexer id="comp_mod_products" view_id="comp_mod_products" class="Comp\Mod\Model\Indexer\QueueRunner">
    <title translate="true">Comp Products</title>
    <description translate="true">Builds products index</description>

and here's my mview.xml

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Mview/etc/mview.xsd">
  <view id="comp_mod_products" class="Comp\Mod\Model\Indexer\QueueRunner" group="indexer">
      <table name="comp_indexing_queue" entity_column="entity_id" />

Finally here's my QueueRunner.php


namespace Comp\Mod\Model\Indexer;

class QueueRunner implements \Magento\Framework\Indexer\ActionInterface, \Magento\Framework\Mview\ActionInterface
  public function __construct()

  public function execute($ids)
    // do somthing 

  public function executeFull()
    return $this->execute(null);

  public function executeList(array $ids)

    return $this->execute($ids);

  public function executeRow($id)
    return $this->execute([$id]);

the // do something part is never called except if I call the indexer using the cli.

  • Did you try execute function without any parameter? – Asad Khan Apr 3 at 11:37

Your Answer

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

Browse other questions tagged or ask your own question.