0

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>
  </indexer>
</config>

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">
    <subscriptions>
      <table name="comp_indexing_queue" entity_column="entity_id" />
    </subscriptions>
  </view>
</config>

Finally here's my QueueRunner.php

<?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.