Skip to content

Commit 7ff5cb7

Browse files
authored
Merge pull request #542 from magento-performance/as-store-url
Store Url fixes
2 parents 4d6f13b + 77f7559 commit 7ff5cb7

File tree

7 files changed

+70
-30
lines changed

7 files changed

+70
-30
lines changed

app/code/Magento/Store/Model/Store.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Magento\Framework\DataObject\IdentityInterface;
1818
use Magento\Framework\Filesystem;
1919
use Magento\Framework\Model\AbstractExtensibleModel;
20+
use Magento\Framework\ObjectManager\ResetAfterRequestInterface;
2021
use Magento\Framework\Url\ModifierInterface;
2122
use Magento\Framework\Url\ScopeInterface as UrlScopeInterface;
2223
use Magento\Framework\UrlInterface;
@@ -43,7 +44,8 @@ class Store extends AbstractExtensibleModel implements
4344
AppScopeInterface,
4445
UrlScopeInterface,
4546
IdentityInterface,
46-
StoreInterface
47+
StoreInterface,
48+
ResetAfterRequestInterface
4749
{
4850
/**
4951
* Store Id key name
@@ -466,7 +468,6 @@ protected function _construct()
466468
protected function _getSession()
467469
{
468470
if (!$this->_session->isSessionExists()) {
469-
$this->_session->setName('store_' . $this->getCode());
470471
$this->_session->start();
471472
}
472473
return $this->_session;
@@ -1421,4 +1422,17 @@ public function __debugInfo()
14211422
{
14221423
return [];
14231424
}
1425+
1426+
/**
1427+
* @inheritDoc
1428+
*/
1429+
public function _resetState(): void
1430+
{
1431+
$this->_baseUrlCache = [];
1432+
$this->_configCache = null;
1433+
$this->_configCacheBaseNodes = [];
1434+
$this->_dirCache = [];
1435+
$this->_urlCache = [];
1436+
$this->_baseUrlCache = [];
1437+
}
14241438
}

dev/tests/api-functional/testsuite/Magento/GraphQl/Store/AvailableStoresTest.php

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -48,24 +48,13 @@ protected function setUp(): void
4848

4949
/**
5050
* @magentoConfigFixture default_store web/seo/use_rewrites 1
51-
* @magentoApiDataFixture Magento/Store/_files/store.php
52-
* @magentoApiDataFixture Magento/Store/_files/inactive_store.php
51+
* @magentoConfigFixture default_store web/unsecure/base_url http://example.com/
52+
* @magentoConfigFixture default_store web/unsecure/base_link_url http://example.com/
53+
* @magentoApiDataFixture Magento/Store/_files/second_website_with_two_stores.php
5354
*/
54-
public function testDefaultWebsiteAvailableStoreConfigs(): void
55+
public function testNonDefaultWebsiteAvailableStoreConfigs(): void
5556
{
56-
$storeConfigs = $this->storeConfigManager->getStoreConfigs();
57-
58-
$expectedAvailableStores = [];
59-
$expectedAvailableStoreCodes = [
60-
'default',
61-
'test'
62-
];
63-
64-
foreach ($storeConfigs as $storeConfig) {
65-
if (in_array($storeConfig->getCode(), $expectedAvailableStoreCodes)) {
66-
$expectedAvailableStores[] = $storeConfig;
67-
}
68-
}
57+
$storeConfigs = $this->storeConfigManager->getStoreConfigs(['fixture_second_store', 'fixture_third_store']);
6958

7059
$query
7160
= <<<QUERY
@@ -101,21 +90,37 @@ public function testDefaultWebsiteAvailableStoreConfigs(): void
10190
}
10291
}
10392
QUERY;
104-
$response = $this->graphQlQuery($query);
93+
$headerMap = ['Store' => 'fixture_second_store'];
94+
$response = $this->graphQlQuery($query, [], '', $headerMap);
10595

10696
$this->assertArrayHasKey('availableStores', $response);
107-
foreach ($expectedAvailableStores as $key => $storeConfig) {
97+
foreach ($storeConfigs as $key => $storeConfig) {
10898
$this->validateStoreConfig($storeConfig, $response['availableStores'][$key]);
10999
}
110100
}
111101

112102
/**
113103
* @magentoConfigFixture default_store web/seo/use_rewrites 1
114-
* @magentoApiDataFixture Magento/Store/_files/second_website_with_two_stores.php
104+
* @magentoConfigFixture default_store web/unsecure/base_url http://example.com/
105+
* @magentoConfigFixture default_store web/unsecure/base_link_url http://example.com/
106+
* @magentoApiDataFixture Magento/Store/_files/store.php
107+
* @magentoApiDataFixture Magento/Store/_files/inactive_store.php
115108
*/
116-
public function testNonDefaultWebsiteAvailableStoreConfigs(): void
109+
public function testDefaultWebsiteAvailableStoreConfigs(): void
117110
{
118-
$storeConfigs = $this->storeConfigManager->getStoreConfigs(['fixture_second_store', 'fixture_third_store']);
111+
$storeConfigs = $this->storeConfigManager->getStoreConfigs();
112+
113+
$expectedAvailableStores = [];
114+
$expectedAvailableStoreCodes = [
115+
'default',
116+
'test'
117+
];
118+
119+
foreach ($storeConfigs as $storeConfig) {
120+
if (in_array($storeConfig->getCode(), $expectedAvailableStoreCodes)) {
121+
$expectedAvailableStores[] = $storeConfig;
122+
}
123+
}
119124

120125
$query
121126
= <<<QUERY
@@ -151,11 +156,10 @@ public function testNonDefaultWebsiteAvailableStoreConfigs(): void
151156
}
152157
}
153158
QUERY;
154-
$headerMap = ['Store' => 'fixture_second_store'];
155-
$response = $this->graphQlQuery($query, [], '', $headerMap);
159+
$response = $this->graphQlQuery($query);
156160

157161
$this->assertArrayHasKey('availableStores', $response);
158-
foreach ($storeConfigs as $key => $storeConfig) {
162+
foreach ($expectedAvailableStores as $key => $storeConfig) {
159163
$this->validateStoreConfig($storeConfig, $response['availableStores'][$key]);
160164
}
161165
}
@@ -209,6 +213,8 @@ private function validateStoreConfig(StoreConfigInterface $storeConfig, array $r
209213

210214
/**
211215
* @magentoConfigFixture default_store web/seo/use_rewrites 1
216+
* @magentoConfigFixture default_store web/unsecure/base_url http://example.com/
217+
* @magentoConfigFixture default_store web/unsecure/base_link_url http://example.com/
212218
* @magentoApiDataFixture Magento/Store/_files/second_website_with_four_stores_divided_in_groups.php
213219
* @magentoConfigFixture web/url/use_store 1
214220
*/
@@ -270,6 +276,8 @@ public function testAllStoreConfigsWithCodeInUrlEnabled(): void
270276

271277
/**
272278
* @magentoConfigFixture default_store web/seo/use_rewrites 1
279+
* @magentoConfigFixture default_store web/unsecure/base_url http://example.com/
280+
* @magentoConfigFixture default_store web/unsecure/base_link_url http://example.com/
273281
* @magentoApiDataFixture Magento/Store/_files/second_website_with_four_stores_divided_in_groups.php
274282
*/
275283
public function testCurrentGroupStoreConfigs(): void

dev/tests/integration/framework/Magento/TestFramework/Event/Transaction.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ function ($errNo, $errStr, $errFile, $errLine) use ($test) {
110110
$this->_eventManager->fireEvent('startTransaction', [$test]);
111111
restore_error_handler();
112112
} catch (\Exception $e) {
113+
$this->_isTransactionActive = false;
113114
$test->getTestResultObject()->addFailure(
114115
$test,
115116
new \PHPUnit\Framework\AssertionFailedError((string)$e),
@@ -125,8 +126,8 @@ function ($errNo, $errStr, $errFile, $errLine) use ($test) {
125126
protected function _rollbackTransaction()
126127
{
127128
if ($this->_isTransactionActive) {
128-
$this->_getConnection()->rollbackTransparentTransaction();
129129
$this->_isTransactionActive = false;
130+
$this->_getConnection()->rollbackTransparentTransaction();
130131
$this->_eventManager->fireEvent('rollbackTransaction');
131132
$this->_getConnection()->closeConnection();
132133
}

lib/internal/Magento/Framework/App/Request/Http.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,5 +458,6 @@ public function _resetState(): void
458458
$this->headers = null;
459459
$this->metadata = [];
460460
$this->content = '';
461+
$this->distroBaseUrl = null;
461462
}
462463
}

lib/internal/Magento/Framework/Interception/Code/Generator/Interceptor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ protected function _getClassMethods()
9292
protected function isInterceptedMethod(\ReflectionMethod $method)
9393
{
9494
return !($method->isConstructor() || $method->isFinal() || $method->isStatic() || $method->isDestructor()) &&
95-
!in_array($method->getName(), ['__sleep', '__wakeup', '__clone']);
95+
!in_array($method->getName(), ['__sleep', '__wakeup', '__clone', '_resetState']);
9696
}
9797

9898
/**

lib/internal/Magento/Framework/ObjectManager/Code/Generator/Proxy.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,21 @@ protected function _getClassMethods()
135135
)
136136
&& !in_array(
137137
$method->getName(),
138-
['__sleep', '__wakeup', '__clone', '__debugInfo']
138+
['__sleep', '__wakeup', '__clone', '__debugInfo', '_resetState']
139139
)
140140
) {
141141
$methods[] = $this->_getMethodInfo($method);
142142
}
143+
if ($method->getName() === '_resetState') {
144+
$methods[] = [
145+
'name' => '_resetState',
146+
'returnType' => 'void',
147+
'body' => "if (\$this->_subject) {\n" .
148+
" \$this->_subject->_resetState(); \n" .
149+
"}\n",
150+
'docblock' => ['shortDescription' => 'Reset state of proxied instance'],
151+
];
152+
}
143153
}
144154

145155
return $methods;

lib/internal/Magento/Framework/Session/SessionManager.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,13 @@ private function initIniOptions()
638638
*/
639639
public function _resetState(): void
640640
{
641-
session_write_close();
641+
if (session_status() === PHP_SESSION_ACTIVE) {
642+
session_write_close();
643+
session_id('');
644+
}
645+
session_name('PHPSESSID');
646+
session_unset();
642647
static::$urlHostCache = [];
648+
$_SESSION = [];
643649
}
644650
}

0 commit comments

Comments
 (0)