Skip to content

Commit b0301d6

Browse files
committed
AC-9569:: [GraphQL Resolver] Customer Resolver Data is Not Invalidated From Import
1 parent 4730f86 commit b0301d6

File tree

2 files changed

+28
-15
lines changed

2 files changed

+28
-15
lines changed

app/code/Magento/ImportExport/Plugin/DeferCacheCleaningUntilImportIsComplete.php

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,38 @@
77

88
namespace Magento\ImportExport\Plugin;
99

10+
use Magento\Framework\App\Cache\TypeListInterface;
1011
use Magento\Framework\Indexer\DeferredCacheCleanerInterface;
1112
use Magento\ImportExport\Model\Import;
1213

1314
class DeferCacheCleaningUntilImportIsComplete
1415
{
16+
private const BEHAVIOR_ADD_UPDATE = 'add_update';
17+
private const ENTITY_CUSTOMER = 'customer';
18+
private const CACHE_TYPE_GRAPHQL_QUERY_RESOLVER_RESULT = 'graphql_query_resolver_result';
19+
1520
/**
1621
* @var DeferredCacheCleanerInterface
1722
*/
1823
private $cacheCleaner;
1924

25+
/**
26+
* TypeListInterface
27+
*
28+
* @var TypeListInterface
29+
*/
30+
private $cacheTypeList;
31+
2032
/**
2133
* @param DeferredCacheCleanerInterface $cacheCleaner
34+
* @param TypeListInterface $cacheTypeList
2235
*/
23-
public function __construct(DeferredCacheCleanerInterface $cacheCleaner)
24-
{
36+
public function __construct(
37+
DeferredCacheCleanerInterface $cacheCleaner,
38+
TypeListInterface $cacheTypeList
39+
) {
2540
$this->cacheCleaner = $cacheCleaner;
41+
$this->cacheTypeList = $cacheTypeList;
2642
}
2743

2844
/**
@@ -47,6 +63,15 @@ public function beforeImportSource(Import $subject): void
4763
*/
4864
public function afterImportSource(Import $subject, bool $result): bool
4965
{
66+
$behavior = $this->request->getParam('behavior');
67+
$entity = $this->request->getParam('entity');
68+
$files = $this->request->getFiles();
69+
70+
if ($behavior === self::BEHAVIOR_ADD_UPDATE &&
71+
$entity === self::ENTITY_CUSTOMER &&
72+
!empty($files)) {
73+
$this->cacheTypeList->cleanType(self::CACHE_TYPE_GRAPHQL_QUERY_RESOLVER_RESULT);
74+
}
5075
$this->cacheCleaner->flush();
5176
return $result;
5277
}

app/code/Magento/Indexer/Model/Indexer/DeferredCacheCleaner.php

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
namespace Magento\Indexer\Model\Indexer;
99

10-
use Magento\Framework\App\Cache\TypeListInterface;
1110
use Magento\Framework\App\CacheInterface;
1211
use Magento\Framework\Event\Manager as EventManager;
1312
use Magento\Framework\Indexer\CacheContext;
@@ -38,32 +37,22 @@ class DeferredCacheCleaner implements DeferredCacheCleanerInterface
3837
*/
3938
private $cacheContext;
4039

41-
/**
42-
* TypeListInterface
43-
*
44-
* @var TypeListInterface
45-
*/
46-
private $cacheTypeList;
47-
4840
/**
4941
* @param EventManager $eventManager
5042
* @param CacheInterface $appCache
5143
* @param DeferredCacheContext $deferredCacheContext
5244
* @param CacheContext $cacheContext
53-
* @param TypeListInterface $cacheTypeList
5445
*/
5546
public function __construct(
5647
EventManager $eventManager,
5748
CacheInterface $appCache,
5849
DeferredCacheContext $deferredCacheContext,
59-
CacheContext $cacheContext,
60-
TypeListInterface $cacheTypeList
50+
CacheContext $cacheContext
6151
) {
6252
$this->eventManager = $eventManager;
6353
$this->deferredCacheContext = $deferredCacheContext;
6454
$this->appCache = $appCache;
6555
$this->cacheContext = $cacheContext;
66-
$this->cacheTypeList = $cacheTypeList;
6756
}
6857

6958
/**
@@ -84,7 +73,6 @@ public function flush(): void
8473
$this->deferredCacheContext->commit();
8574
$this->eventManager->dispatch('clean_cache_by_tags', ['object' => $this->cacheContext]);
8675
$identities = $this->cacheContext->getIdentities();
87-
$this->cacheTypeList->cleanType('graphql_query_resolver_result');
8876
if (!empty($identities)) {
8977
$this->appCache->clean($identities);
9078
$this->cacheContext->flush();

0 commit comments

Comments
 (0)