File tree Expand file tree Collapse file tree 5 files changed +81
-1
lines changed
lib/internal/Magento/Framework/Indexer Expand file tree Collapse file tree 5 files changed +81
-1
lines changed Original file line number Diff line number Diff line change
1
+ <?php
2
+ /**
3
+ * Copyright © Magento, Inc. All rights reserved.
4
+ * See COPYING.txt for license details.
5
+ */
6
+ declare (strict_types=1 );
7
+
8
+ namespace Magento \ImportExport \Plugin ;
9
+
10
+ use Magento \Framework \Indexer \DeferredCacheCleanerInterface ;
11
+ use Magento \ImportExport \Model \Import ;
12
+
13
+ class DeferCacheCleaningUntilImportIsComplete
14
+ {
15
+ /**
16
+ * @var DeferredCacheCleanerInterface
17
+ */
18
+ private $ cacheCleaner ;
19
+
20
+ /**
21
+ * @param DeferredCacheCleanerInterface $cacheCleaner
22
+ */
23
+ public function __construct (DeferredCacheCleanerInterface $ cacheCleaner )
24
+ {
25
+ $ this ->cacheCleaner = $ cacheCleaner ;
26
+ }
27
+
28
+ /**
29
+ * Start deferred cache before stock items save
30
+ *
31
+ * @param Import $subject
32
+ * @return void
33
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
34
+ */
35
+ public function beforeImportSource (Import $ subject ): void
36
+ {
37
+ $ this ->cacheCleaner ->start ();
38
+ }
39
+
40
+ /**
41
+ * Flush deferred cache after stock items save
42
+ *
43
+ * @param Import $subject
44
+ * @param bool $result
45
+ * @return void
46
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
47
+ */
48
+ public function afterImportSource (Import $ subject , bool $ result ): void
49
+ {
50
+ $ this ->cacheCleaner ->flush ();
51
+ }
52
+ }
Original file line number Diff line number Diff line change 39
39
</argument >
40
40
</arguments >
41
41
</type >
42
+ <type name =" Magento\ImportExport\Model\Import" >
43
+ <plugin name =" import_defer_cache" type =" Magento\ImportExport\Plugin\DeferCacheCleaningUntilImportIsComplete" sortOrder =" 1" />
44
+ </type >
42
45
</config >
Original file line number Diff line number Diff line change 10
10
use Magento \Framework \App \CacheInterface ;
11
11
use Magento \Framework \Event \Manager as EventManager ;
12
12
use Magento \Framework \Indexer \CacheContext ;
13
+ use Magento \Framework \Indexer \DeferredCacheCleanerInterface ;
13
14
14
15
/**
15
16
* Deferred cache cleaner for indexers
16
17
*/
17
- class DeferredCacheCleaner
18
+ class DeferredCacheCleaner implements DeferredCacheCleanerInterface
18
19
{
19
20
/**
20
21
* @var EventManager
Original file line number Diff line number Diff line change 13
13
<preference for =" Magento\Framework\Indexer\Table\StrategyInterface" type =" Magento\Framework\Indexer\Table\Strategy" />
14
14
<preference for =" Magento\Framework\Indexer\StateInterface" type =" Magento\Indexer\Model\Indexer\State" />
15
15
<preference for =" Magento\Framework\Indexer\IndexMutexInterface" type =" Magento\Indexer\Model\IndexMutex" />
16
+ <preference for =" Magento\Framework\Indexer\DeferredCacheCleanerInterface" type =" Magento\Indexer\Model\Indexer\DeferredCacheCleaner" />
16
17
<type name =" Magento\Framework\Indexer\Table\StrategyInterface" shared =" false" />
17
18
<type name =" Magento\Indexer\Model\Indexer" >
18
19
<arguments >
Original file line number Diff line number Diff line change
1
+ <?php
2
+ /**
3
+ * Copyright © Magento, Inc. All rights reserved.
4
+ * See COPYING.txt for license details.
5
+ */
6
+ declare (strict_types=1 );
7
+
8
+ namespace Magento \Framework \Indexer ;
9
+
10
+ interface DeferredCacheCleanerInterface
11
+ {
12
+ /**
13
+ * Defer cache cleaning until flush() is called
14
+ *
15
+ * @see flush()
16
+ */
17
+ public function start (): void ;
18
+
19
+ /**
20
+ * Flush cache
21
+ */
22
+ public function flush (): void ;
23
+ }
You can’t perform that action at this time.
0 commit comments