From 256cedd9ece42f4b0e848f7cea0697c0beff426c Mon Sep 17 00:00:00 2001 From: siimm Date: Wed, 2 Sep 2020 11:04:53 +0000 Subject: [PATCH 1/3] ensure tags uniqueness --- lib/internal/Magento/Framework/Indexer/CacheContext.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/Indexer/CacheContext.php b/lib/internal/Magento/Framework/Indexer/CacheContext.php index 4a6964477ebd5..1374a8c3f2089 100644 --- a/lib/internal/Magento/Framework/Indexer/CacheContext.php +++ b/lib/internal/Magento/Framework/Indexer/CacheContext.php @@ -73,6 +73,6 @@ public function getIdentities() $identities[] = $cacheTag . '_' . $id; } } - return array_merge($identities, array_unique($this->tags)); + return array_unique(array_merge($identities, array_unique($this->tags)); } } From f17148f902309ddfd6868b17b7183099222084d8 Mon Sep 17 00:00:00 2001 From: siimm Date: Fri, 4 Sep 2020 08:25:34 +0000 Subject: [PATCH 2/3] add simple unit test for #29890 --- .../Indexer/Test/Unit/CacheContextTest.php | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 lib/internal/Magento/Framework/Indexer/Test/Unit/CacheContextTest.php diff --git a/lib/internal/Magento/Framework/Indexer/Test/Unit/CacheContextTest.php b/lib/internal/Magento/Framework/Indexer/Test/Unit/CacheContextTest.php new file mode 100644 index 0000000000000..90606435a4487 --- /dev/null +++ b/lib/internal/Magento/Framework/Indexer/Test/Unit/CacheContextTest.php @@ -0,0 +1,59 @@ +object = new CacheContext(); + } + + /** + * @param array $tagsData + * @param array $expected + * @dataProvider getTagsDataProvider + */ + public function testUniqueTags($tagsData, $expected) + { + foreach ($tagsData as $tagSet) { + foreach ($tagSet as $cacheTag => $ids) { + $this->object->registerEntities($cacheTag, $ids); + } + } + + $this->assertEquals($this->object->getIdentities(), $expected); + } + + /** + * @return array + */ + public function getTagsDataProvider() + { + return [ + 'same entities and ids' => [ + [['cat_p' => [1]], ['cat_p' => [1]]], + ['cat_p_1'] + ], + 'same entities with overlapping ids' => [ + [['cat_p' => [1, 2, 3]], ['cat_p' => [3]]], + ['cat_p_1', 'cat_p_2', 'cat_p_3'] + ] + ]; + } +} + From 47761ec37af3422a807faf9ce52e682502832502 Mon Sep 17 00:00:00 2001 From: siimm Date: Sun, 6 Sep 2020 19:55:52 +0000 Subject: [PATCH 3/3] fix typo, remove empty line in test --- lib/internal/Magento/Framework/Indexer/CacheContext.php | 2 +- .../Magento/Framework/Indexer/Test/Unit/CacheContextTest.php | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/internal/Magento/Framework/Indexer/CacheContext.php b/lib/internal/Magento/Framework/Indexer/CacheContext.php index 1374a8c3f2089..b29aafa054997 100644 --- a/lib/internal/Magento/Framework/Indexer/CacheContext.php +++ b/lib/internal/Magento/Framework/Indexer/CacheContext.php @@ -73,6 +73,6 @@ public function getIdentities() $identities[] = $cacheTag . '_' . $id; } } - return array_unique(array_merge($identities, array_unique($this->tags)); + return array_unique(array_merge($identities, array_unique($this->tags))); } } diff --git a/lib/internal/Magento/Framework/Indexer/Test/Unit/CacheContextTest.php b/lib/internal/Magento/Framework/Indexer/Test/Unit/CacheContextTest.php index 90606435a4487..a13d5d54aafe7 100644 --- a/lib/internal/Magento/Framework/Indexer/Test/Unit/CacheContextTest.php +++ b/lib/internal/Magento/Framework/Indexer/Test/Unit/CacheContextTest.php @@ -56,4 +56,3 @@ public function getTagsDataProvider() ]; } } -