Skip to content

Commit ef10316

Browse files
committed
MAGETWO-58924: SQL error wait timeout error when saving categories
- fix singleton resource
1 parent 2877f3a commit ef10316

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryHashMap.php

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
namespace Magento\CatalogUrlRewrite\Model\Map;
77

8-
use Magento\Catalog\Model\ResourceModel\Category;
8+
use Magento\Catalog\Model\ResourceModel\CategoryFactory;
99
use Magento\Catalog\Model\CategoryRepository;
1010
use Magento\Catalog\Api\Data\CategoryInterface;
1111

@@ -20,19 +20,19 @@ class DataCategoryHashMap implements HashMapInterface
2020
/** @var CategoryRepository */
2121
private $categoryRepository;
2222

23-
/** @var Category */
24-
private $categoryResource;
23+
/** @var CategoryFactory */
24+
private $categoryResourceFactory;
2525

2626
/**
2727
* @param CategoryRepository $categoryRepository
28-
* @param Category $categoryResource
28+
* @param CategoryFactory $categoryResourceFactory
2929
*/
3030
public function __construct(
3131
CategoryRepository $categoryRepository,
32-
Category $categoryResource
32+
CategoryFactory $categoryResourceFactory
3333
) {
3434
$this->categoryRepository = $categoryRepository;
35-
$this->categoryResource = $categoryResource;
35+
$this->categoryResourceFactory = $categoryResourceFactory;
3636
}
3737

3838
/**
@@ -70,9 +70,10 @@ public function getData($categoryId, $key)
7070
*/
7171
private function getAllCategoryChildrenIds(CategoryInterface $category)
7272
{
73-
$connection = $this->categoryResource->getConnection();
73+
$categoryResource = $this->categoryResourceFactory->create();
74+
$connection = $categoryResource->getConnection();
7475
$select = $connection->select()
75-
->from($this->categoryResource->getEntityTable(), 'entity_id')
76+
->from($categoryResource->getEntityTable(), 'entity_id')
7677
->where($connection->quoteIdentifier('path') . ' LIKE :c_path');
7778
$bind = ['c_path' => $category->getPath() . '%'];
7879
return $connection->fetchCol($select, $bind);

app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryHashMapTest.php

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
*/
66
namespace Magento\CatalogUrlRewrite\Test\Unit\Model\Map;
77

8-
use Magento\Catalog\Model\ResourceModel\Category as CategoryResource;
8+
use Magento\Catalog\Model\ResourceModel\CategoryFactory;
9+
use Magento\Catalog\Model\ResourceModel\Category;
910
use Magento\Framework\DB\Select;
1011
use Magento\Catalog\Model\CategoryRepository;
1112
use Magento\Catalog\Api\Data\CategoryInterface;
@@ -21,7 +22,10 @@ class DataCategoryHashMapTest extends \PHPUnit_Framework_TestCase
2122
/** @var CategoryRepository|\PHPUnit_Framework_MockObject_MockObject */
2223
private $categoryRepository;
2324

24-
/** @var CategoryResource|\PHPUnit_Framework_MockObject_MockObject */
25+
/** @var CategoryResourceFactory|\PHPUnit_Framework_MockObject_MockObject */
26+
private $categoryResourceFactory;
27+
28+
/** @var Category|\PHPUnit_Framework_MockObject_MockObject */
2529
private $categoryResource;
2630

2731
/** @var DataCategoryHashMap|\PHPUnit_Framework_MockObject_MockObject */
@@ -30,19 +34,24 @@ class DataCategoryHashMapTest extends \PHPUnit_Framework_TestCase
3034
protected function setUp()
3135
{
3236
$this->categoryRepository = $this->getMock(CategoryRepository::class, [], [], '', false);
37+
$this->categoryResourceFactory = $this->getMock(CategoryFactory::class, ['create'], [], '', false);
3338
$this->categoryResource = $this->getMock(
34-
CategoryResource::class,
39+
Category::class,
3540
['getConnection', 'getEntityTable'],
3641
[],
3742
'',
3843
false
3944
);
4045

46+
$this->categoryResourceFactory->expects($this->any())
47+
->method('create')
48+
->willReturn($this->categoryResource);
49+
4150
$this->model = (new ObjectManager($this))->getObject(
4251
DataCategoryHashMap::class,
4352
[
4453
'categoryRepository' => $this->categoryRepository,
45-
'categoryResource' => $this->categoryResource
54+
'categoryResourceFactory' => $this->categoryResourceFactory
4655
]
4756
);
4857
}

0 commit comments

Comments
 (0)