Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assign/remove source from a product triggers cache clearance request for all grouped prdoucts #3403

Open
adarshkhatri opened this issue Nov 16, 2023 · 1 comment

Comments

@adarshkhatri
Copy link

adarshkhatri commented Nov 16, 2023

Preconditions (*)

  1. magento/module-inventory-cache
  2. Magento 2.4.7-p2

What is happening?

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.

public function aroundExecuteList(Sync $subject, callable $proceed, array $stockIds)

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.

Explanation

    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 (*)

  1. Make sure you have some grouped products
  2. Run bin/magento indexer:reindex inventory

Expected result (*)

  1. The system should only send impacted products to clear the cache

Actual result (*)

  1. The system sends all the grouped products to clear the cache every time it is indexing.

Proposed solution:

#3402

Copy link

m2-assistant bot commented Nov 16, 2023

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


Join Magento Community Engineering Slack and ask your questions in #github channel.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Ready for Grooming
Development

No branches or pull requests

1 participant