Skip to content

Commit a1d7370

Browse files
committed
MC-16108: EAV attribute is not cached
- Add customer, custom address, catalog category eav attributes to cache;
1 parent 7a9dadf commit a1d7370

File tree

4 files changed

+164
-31
lines changed

4 files changed

+164
-31
lines changed

app/code/Magento/Catalog/Model/Config.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ class Config extends \Magento\Eav\Model\Config
133133
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
134134
* @param \Magento\Eav\Model\Config $eavConfig
135135
* @param SerializerInterface $serializer
136-
* @param array $data
136+
* @param array $systemAttributes
137137
*
138138
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
139139
*/
@@ -151,7 +151,7 @@ public function __construct(
151151
\Magento\Store\Model\StoreManagerInterface $storeManager,
152152
\Magento\Eav\Model\Config $eavConfig,
153153
SerializerInterface $serializer = null,
154-
$data = []
154+
$systemAttributes = []
155155
) {
156156
$this->_scopeConfig = $scopeConfig;
157157
$this->_configFactory = $configFactory;
@@ -168,7 +168,7 @@ public function __construct(
168168
$cacheState,
169169
$universalFactory,
170170
$serializer,
171-
$data
171+
$systemAttributes
172172
);
173173
}
174174

app/code/Magento/Catalog/etc/di.xml

Lines changed: 102 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,35 +1178,115 @@
11781178
</type>
11791179
<type name="Magento\Eav\Model\Config">
11801180
<arguments>
1181-
<argument name="data" xsi:type="array">
1182-
<item name="name" xsi:type="string">catalog_product</item>
1183-
<item name="short_description" xsi:type="string">catalog_product</item>
1184-
<item name="price" xsi:type="string">catalog_product</item>
1181+
<argument name="systemAttributes" xsi:type="array">
1182+
<item name="allow_message" xsi:type="string">catalog_product</item>
1183+
<item name="allow_open_amount" xsi:type="string">catalog_product</item>
1184+
<item name="category_ids" xsi:type="string">catalog_product</item>
1185+
<item name="country_of_manufacture" xsi:type="string">catalog_product</item>
1186+
<item name="created_at" xsi:type="string">catalog_product</item>
1187+
<item name="custom_design" xsi:type="string">catalog_product</item>
1188+
<item name="custom_design_from" xsi:type="string">catalog_product</item>
1189+
<item name="custom_design_to" xsi:type="string">catalog_product</item>
1190+
<item name="custom_layout" xsi:type="string">catalog_product</item>
1191+
<item name="custom_layout_update" xsi:type="string">catalog_product</item>
1192+
<item name="description" xsi:type="string">catalog_product</item>
1193+
<item name="email_template" xsi:type="string">catalog_product</item>
1194+
<item name="gallery" xsi:type="string">catalog_product</item>
1195+
<item name="giftcard_amounts" xsi:type="string">catalog_product</item>
1196+
<item name="giftcard_type" xsi:type="string">catalog_product</item>
1197+
<item name="gift_message_available" xsi:type="string">catalog_product</item>
1198+
<item name="gift_wrapping_available" xsi:type="string">catalog_product</item>
1199+
<item name="gift_wrapping_price" xsi:type="string">catalog_product</item>
1200+
<item name="has_options" xsi:type="string">catalog_product</item>
11851201
<item name="image" xsi:type="string">catalog_product</item>
1186-
<item name="status" xsi:type="string">catalog_product</item>
1187-
<item name="visibility" xsi:type="string">catalog_product</item>
1188-
<item name="tier_price" xsi:type="string">catalog_product</item>
1189-
<item name="weight" xsi:type="string">catalog_product</item>
1190-
<item name="special_price" xsi:type="string">catalog_product</item>
1191-
<item name="special_from_date" xsi:type="string">catalog_product</item>
1192-
<item name="special_to_date" xsi:type="string">catalog_product</item>
1193-
<item name="small_image" xsi:type="string">catalog_product</item>
1194-
<item name="thumbnail" xsi:type="string">catalog_product</item>
1202+
<item name="image_label" xsi:type="string">catalog_product</item>
1203+
<item name="is_redeemable" xsi:type="string">catalog_product</item>
1204+
<item name="is_returnable" xsi:type="string">catalog_product</item>
1205+
<item name="lifetime" xsi:type="string">catalog_product</item>
1206+
<item name="links_exist" xsi:type="string">catalog_product</item>
1207+
<item name="links_purchased_separately" xsi:type="string">catalog_product</item>
1208+
<item name="links_title" xsi:type="string">catalog_product</item>
1209+
<item name="media_gallery" xsi:type="string">catalog_product</item>
1210+
<item name="meta_description" xsi:type="string">catalog_product</item>
1211+
<item name="meta_keyword" xsi:type="string">catalog_product</item>
1212+
<item name="meta_title" xsi:type="string">catalog_product</item>
1213+
<item name="minimal_price" xsi:type="string">catalog_product</item>
1214+
<item name="msrp" xsi:type="string">catalog_product</item>
1215+
<item name="msrp_display_actual_price_type" xsi:type="string">catalog_product</item>
1216+
<item name="name" xsi:type="string">catalog_product</item>
11951217
<item name="news_from_date" xsi:type="string">catalog_product</item>
11961218
<item name="news_to_date" xsi:type="string">catalog_product</item>
1219+
<item name="old_id" xsi:type="string">catalog_product</item>
1220+
<item name="open_amount_max" xsi:type="string">catalog_product</item>
1221+
<item name="open_amount_min" xsi:type="string">catalog_product</item>
1222+
<item name="options_container" xsi:type="string">catalog_product</item>
1223+
<item name="page_layout" xsi:type="string">catalog_product</item>
1224+
<item name="price" xsi:type="string">catalog_product</item>
11971225
<item name="price_type" xsi:type="string">catalog_product</item>
1198-
<item name="weight_type" xsi:type="string">catalog_product</item>
11991226
<item name="price_view" xsi:type="string">catalog_product</item>
1227+
<item name="quantity_and_stock_status" xsi:type="string">catalog_product</item>
1228+
<item name="related_tgtr_position_behavior" xsi:type="string">catalog_product</item>
1229+
<item name="related_tgtr_position_limit" xsi:type="string">catalog_product</item>
1230+
<item name="required_options" xsi:type="string">catalog_product</item>
1231+
<item name="samples_title" xsi:type="string">catalog_product</item>
12001232
<item name="shipment_type" xsi:type="string">catalog_product</item>
1201-
<item name="msrp" xsi:type="string">catalog_product</item>
1202-
<item name="msrp_display_actual_price_type" xsi:type="string">catalog_product</item>
1203-
<item name="giftcard_amounts" xsi:type="string">catalog_product</item>
1204-
<item name="allow_open_amount" xsi:type="string">catalog_product</item>
1205-
<item name="open_amount_min" xsi:type="string">catalog_product</item>
1206-
<item name="open_amount_max" xsi:type="string">catalog_product</item>
1233+
<item name="short_description" xsi:type="string">catalog_product</item>
1234+
<item name="sku" xsi:type="string">catalog_product</item>
1235+
<item name="sku_type" xsi:type="string">catalog_product</item>
1236+
<item name="small_image" xsi:type="string">catalog_product</item>
1237+
<item name="small_image_label" xsi:type="string">catalog_product</item>
1238+
<item name="special_from_date" xsi:type="string">catalog_product</item>
1239+
<item name="special_price" xsi:type="string">catalog_product</item>
1240+
<item name="special_to_date" xsi:type="string">catalog_product</item>
1241+
<item name="status" xsi:type="string">catalog_product</item>
1242+
<item name="swatch_image" xsi:type="string">catalog_product</item>
12071243
<item name="tax_class_id" xsi:type="string">catalog_product</item>
1208-
<item name="category_ids" xsi:type="string">catalog_product</item>
1209-
<item name="media_gallery" xsi:type="string">catalog_product</item>
1244+
<item name="thumbnail" xsi:type="string">catalog_product</item>
1245+
<item name="thumbnail_label" xsi:type="string">catalog_product</item>
1246+
<item name="tier_price" xsi:type="string">catalog_product</item>
1247+
<item name="updated_at" xsi:type="string">catalog_product</item>
1248+
<item name="upsell_tgtr_position_behavior" xsi:type="string">catalog_product</item>
1249+
<item name="upsell_tgtr_position_limit" xsi:type="string">catalog_product</item>
1250+
<item name="url_key" xsi:type="string">catalog_product</item>
1251+
<item name="url_path" xsi:type="string">catalog_product</item>
1252+
<item name="use_config_allow_message" xsi:type="string">catalog_product</item>
1253+
<item name="use_config_email_template" xsi:type="string">catalog_product</item>
1254+
<item name="use_config_is_redeemable" xsi:type="string">catalog_product</item>
1255+
<item name="use_config_lifetime" xsi:type="string">catalog_product</item>
1256+
<item name="visibility" xsi:type="string">catalog_product</item>
1257+
<item name="weight" xsi:type="string">catalog_product</item>
1258+
<item name="weight_type" xsi:type="string">catalog_product</item>
1259+
<item name="all_children" xsi:type="string">catalog_category</item>
1260+
<item name="available_sort_by" xsi:type="string">catalog_category</item>
1261+
<item name="children" xsi:type="string">catalog_category</item>
1262+
<item name="children_count" xsi:type="string">catalog_category</item>
1263+
<item name="custom_apply_to_products" xsi:type="string">catalog_category</item>
1264+
<item name="custom_design" xsi:type="string">catalog_category</item>
1265+
<item name="custom_design_from" xsi:type="string">catalog_category</item>
1266+
<item name="custom_design_to" xsi:type="string">catalog_category</item>
1267+
<item name="custom_layout_update" xsi:type="string">catalog_category</item>
1268+
<item name="custom_use_parent_settings" xsi:type="string">catalog_category</item>
1269+
<item name="default_sort_by" xsi:type="string">catalog_category</item>
1270+
<item name="description" xsi:type="string">catalog_category</item>
1271+
<item name="display_mode" xsi:type="string">catalog_category</item>
1272+
<item name="filter_price_range" xsi:type="string">catalog_category</item>
1273+
<item name="image" xsi:type="string">catalog_category</item>
1274+
<item name="include_in_menu" xsi:type="string">catalog_category</item>
1275+
<item name="is_active" xsi:type="string">catalog_category</item>
1276+
<item name="is_anchor" xsi:type="string">catalog_category</item>
1277+
<item name="landing_page" xsi:type="string">catalog_category</item>
1278+
<item name="level" xsi:type="string">catalog_category</item>
1279+
<item name="meta_description" xsi:type="string">catalog_category</item>
1280+
<item name="meta_keywords" xsi:type="string">catalog_category</item>
1281+
<item name="meta_title" xsi:type="string">catalog_category</item>
1282+
<item name="name" xsi:type="string">catalog_category</item>
1283+
<item name="page_layout" xsi:type="string">catalog_category</item>
1284+
<item name="name" xsi:type="string">catalog_category</item>
1285+
<item name="path" xsi:type="string">catalog_category</item>
1286+
<item name="path_in_store" xsi:type="string">catalog_category</item>
1287+
<item name="position" xsi:type="string">catalog_category</item>
1288+
<item name="url_key" xsi:type="string">catalog_category</item>
1289+
<item name="url_path" xsi:type="string">catalog_category</item>
12101290
</argument>
12111291
</arguments>
12121292
</type>

app/code/Magento/Customer/etc/di.xml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,4 +473,55 @@
473473
<preference
474474
for="Magento\Customer\Api\AccountDelegationInterface"
475475
type="Magento\Customer\Model\Delegation\AccountDelegation" />
476+
<type name="Magento\Eav\Model\Config">
477+
<arguments>
478+
<argument name="systemAttributes" xsi:type="array">
479+
<item name="created_at" xsi:type="string">customer</item>
480+
<item name="created_in" xsi:type="string">customer</item>
481+
<item name="default_billing" xsi:type="string">customer</item>
482+
<item name="default_shipping" xsi:type="string">customer</item>
483+
<item name="disable_auto_group_change" xsi:type="string">customer</item>
484+
<item name="dob" xsi:type="string">customer</item>
485+
<item name="email" xsi:type="string">customer</item>
486+
<item name="failures_num" xsi:type="string">customer</item>
487+
<item name="firstname" xsi:type="string">customer</item>
488+
<item name="first_failure" xsi:type="string">customer</item>
489+
<item name="gender" xsi:type="string">customer</item>
490+
<item name="group_id" xsi:type="string">customer</item>
491+
<item name="lastname" xsi:type="string">customer</item>
492+
<item name="lock_expires" xsi:type="string">customer</item>
493+
<item name="middlename" xsi:type="string">customer</item>
494+
<item name="password_hash" xsi:type="string">customer</item>
495+
<item name="prefix" xsi:type="string">customer</item>
496+
<item name="reward_update_notification" xsi:type="string">customer</item>
497+
<item name="reward_warning_notification" xsi:type="string">customer</item>
498+
<item name="rp_token" xsi:type="string">customer</item>
499+
<item name="rp_token_created_at" xsi:type="string">customer</item>
500+
<item name="store_id" xsi:type="string">customer</item>
501+
<item name="suffix" xsi:type="string">customer</item>
502+
<item name="taxvat" xsi:type="string">customer</item>
503+
<item name="updated_at" xsi:type="string">customer</item>
504+
<item name="website_id" xsi:type="string">customer</item>
505+
<item name="city" xsi:type="string">customer_address</item>
506+
<item name="company" xsi:type="string">customer_address</item>
507+
<item name="country_id" xsi:type="string">customer_address</item>
508+
<item name="fax" xsi:type="string">customer_address</item>
509+
<item name="firstname" xsi:type="string">customer_address</item>
510+
<item name="lastname" xsi:type="string">customer_address</item>
511+
<item name="middlename" xsi:type="string">customer_address</item>
512+
<item name="postcode" xsi:type="string">customer_address</item>
513+
<item name="prefix" xsi:type="string">customer_address</item>
514+
<item name="region" xsi:type="string">customer_address</item>
515+
<item name="region_id" xsi:type="string">customer_address</item>
516+
<item name="street" xsi:type="string">customer_address</item>
517+
<item name="suffix" xsi:type="string">customer_address</item>
518+
<item name="telephone" xsi:type="string">customer_address</item>
519+
<item name="vat_id" xsi:type="string">customer_address</item>
520+
<item name="vat_is_valid" xsi:type="string">customer_address</item>
521+
<item name="vat_request_date" xsi:type="string">customer_address</item>
522+
<item name="vat_request_id" xsi:type="string">customer_address</item>
523+
<item name="vat_request_success" xsi:type="string">customer_address</item>
524+
</argument>
525+
</arguments>
526+
</type>
476527
</config>

app/code/Magento/Eav/Model/Config.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ class Config
138138
*
139139
* @var array
140140
*/
141-
private $data;
141+
private $systemAttributes;
142142

143143
/**
144144
* @param \Magento\Framework\App\CacheInterface $cache
@@ -147,7 +147,7 @@ class Config
147147
* @param \Magento\Framework\App\Cache\StateInterface $cacheState
148148
* @param \Magento\Framework\Validator\UniversalFactory $universalFactory
149149
* @param SerializerInterface $serializer
150-
* @param array $data
150+
* @param array $systemAttributes
151151
* @codeCoverageIgnore
152152
*/
153153
public function __construct(
@@ -157,15 +157,15 @@ public function __construct(
157157
\Magento\Framework\App\Cache\StateInterface $cacheState,
158158
\Magento\Framework\Validator\UniversalFactory $universalFactory,
159159
SerializerInterface $serializer = null,
160-
$data = []
160+
$systemAttributes = []
161161
) {
162162
$this->_cache = $cache;
163163
$this->_entityTypeFactory = $entityTypeFactory;
164164
$this->entityTypeCollectionFactory = $entityTypeCollectionFactory;
165165
$this->_cacheState = $cacheState;
166166
$this->_universalFactory = $universalFactory;
167167
$this->serializer = $serializer ?: ObjectManager::getInstance()->get(SerializerInterface::class);
168-
$this->data = $data;
168+
$this->systemAttributes = $systemAttributes;
169169
}
170170

171171
/**
@@ -527,8 +527,10 @@ public function getAttribute($entityType, $code)
527527
return $this->attributes[$entityTypeCode][$code];
528528
}
529529

530-
if (array_key_exists($code, $this->data) && in_array($entityTypeCode, array_values($this->data), true)) {
531-
$this->initSystemAttributes($entityType, $this->data);
530+
if (array_key_exists($code, $this->systemAttributes)
531+
&& in_array($entityTypeCode, array_values($this->systemAttributes), true)
532+
) {
533+
$this->initSystemAttributes($entityType, $this->systemAttributes);
532534
}
533535
if (isset($this->attributes[$entityTypeCode][$code])) {
534536
\Magento\Framework\Profiler::stop('EAV: ' . __METHOD__);

0 commit comments

Comments
 (0)