You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MSI has this function in place as around method. Which gets the product IDs from inventory_stock_ID table before and after.
Pay attention to around method here.
Then, it also has this function as after method to index grouped products, which happens after the above function (around) runs, meaning at this time, the system has already sent all the grouped product IDs to clear the cache.
public function aroundExecuteList(Sync $subject, callable $proceed, array $stockIds)
{
$beforeReindexProductIds = $this->getProductIdsByStockIds->execute($stockIds);
//finds 500 products, at this point there are grouped products because after plugin would have run earlier and had added grouped products
$proceed($stockIds);
$afterReindexProductIds = $this->getProductIdsByStockIds->execute($stockIds);
//finds 299 products, at this stage after plugin hasn't run yet, as it is around method
$productIdsForCacheClean = array_diff($beforeReindexProductIds, $afterReindexProductIds);
//diff is 201 -- grouped products (200) and 1 product that actually being reindexed for
if ($productIdsForCacheClean) {
$this->flushCacheByProductIds->execute($productIdsForCacheClean);
//201 grouped products (200) are sent to clear the cache
}
}
What this means?
If I have 200 grouped products in my system, every time a single product's (not related to grouped whatsoever) sources deleted/added, then it will send the cache clear request for this product PLUS that 200 grouped products.
Steps to reproduce (*)
Make sure you have some grouped products
Run bin/magento indexer:reindex inventory
Expected result (*)
The system should only send impacted products to clear the cache
Actual result (*)
The system sends all the grouped products to clear the cache every time it is indexing.
Hi @adarshkhatri. Thank you for your report.
To speed up processing of this issue, make sure that you provided sufficient information.
Add a comment to assign the issue: @magento I am working on this
Preconditions (*)
magento/module-inventory-cache
What is happening?
MSI has this function in place as
around
method. Which gets the product IDs frominventory_stock_ID
table before and after.Pay attention to
around
method here.inventory/InventoryCache/Plugin/InventoryIndexer/Indexer/Stock/Strategy/Sync/CacheFlush.php
Line 51 in 790c7ff
Then, it also has this function as
after
method to index grouped products, which happens after the above function (around) runs, meaning at this time, the system has already sent all the grouped product IDs to clear the cache.inventory/InventoryGroupedProductIndexer/Plugin/InventoryIndexer/Indexer/Stock/Strategy/Sync/ReindexFullPlugin.php
Line 43 in 790c7ff
Explanation
What this means?
If I have 200 grouped products in my system, every time a single product's (not related to grouped whatsoever) sources deleted/added, then it will send the cache clear request for this product PLUS that 200 grouped products.
Steps to reproduce (*)
bin/magento indexer:reindex inventory
Expected result (*)
Actual result (*)
Proposed solution:
#3402
The text was updated successfully, but these errors were encountered: