From f4fb3fcdb0e2c7c1d018dd6ac87d3b61fe0c6f99 Mon Sep 17 00:00:00 2001
From: Cristian Partica <cpartica@magento.com>
Date: Wed, 28 Dec 2016 17:07:47 -0600
Subject: [PATCH] MAGETWO-58924: SQL error wait timeout error when saving
 categories

- use clone instead of non shared object because of performance improvement
---
 .../Category/ChildrenUrlRewriteGenerator.php  | 19 ++++++-----
 .../CurrentUrlRewritesRegenerator.php         | 21 ++++++------
 .../Model/CategoryUrlRewriteGenerator.php     | 30 +++++++++--------
 .../Product/CurrentUrlRewritesRegenerator.php | 21 ++++++------
 .../Model/ProductScopeRewriteGenerator.php    | 32 +++++++++++--------
 .../Observer/AfterImportDataObserver.php      | 23 +++++++------
 .../Observer/UrlRewriteHandler.php            | 30 +++++++++--------
 .../ChildrenUrlRewriteGeneratorTest.php       | 10 +++++-
 .../CurrentUrlRewritesRegeneratorTest.php     | 16 +++++++---
 .../Model/CategoryUrlRewriteGeneratorTest.php | 10 +++++-
 .../CurrentUrlRewritesRegeneratorTest.php     | 14 ++++++--
 .../ProductScopeRewriteGeneratorTest.php      | 10 +++++-
 .../Observer/AfterImportDataObserverTest.php  | 10 +++++-
 app/code/Magento/UrlRewrite/etc/di.xml        |  1 -
 .../Model/CategoryUrlRewriteGeneratorTest.php |  6 ++--
 15 files changed, 162 insertions(+), 91 deletions(-)

diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php
index 14215d62310..6080c14ee24 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php
@@ -8,7 +8,7 @@ namespace Magento\CatalogUrlRewrite\Model\Category;
 use Magento\Catalog\Model\Category;
 use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory;
 use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator;
-use Magento\UrlRewrite\Model\UrlRewritesSet;
+use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
 use Magento\Framework\App\ObjectManager;
 
 class ChildrenUrlRewriteGenerator
@@ -20,21 +20,23 @@ class ChildrenUrlRewriteGenerator
     protected $categoryUrlRewriteGeneratorFactory;
 
     /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSet;
+    private $urlRewritesSetPlaceHolder;
 
     /**
      * @param \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider $childrenCategoriesProvider
      * @param \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory
-     * @param UrlRewritesSet|null $urlRewritesSet
+     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
      */
     public function __construct(
         ChildrenCategoriesProvider $childrenCategoriesProvider,
         CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory,
-        UrlRewritesSet $urlRewritesSet = null
+        UrlRewritesSetFactory $urlRewritesSetFactory = null
     ) {
         $this->childrenCategoriesProvider = $childrenCategoriesProvider;
         $this->categoryUrlRewriteGeneratorFactory = $categoryUrlRewriteGeneratorFactory;
-        $this->urlRewritesSet = $urlRewritesSet ?: ObjectManager::getInstance()->get(UrlRewritesSet::class);
+        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
+            ->get(UrlRewritesSetFactory::class);
+        $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create();
     }
 
     /**
@@ -47,18 +49,19 @@ class ChildrenUrlRewriteGenerator
      */
     public function generate($storeId, Category $category, $rootCategoryId = null)
     {
+        $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder;
         foreach ($this->childrenCategoriesProvider->getChildren($category, true) as $childCategory) {
             $childCategory->setStoreId($storeId);
             $childCategory->setData('save_rewrites_history', $category->getData('save_rewrites_history'));
             /** @var CategoryUrlRewriteGenerator $categoryUrlRewriteGenerator */
             $categoryUrlRewriteGenerator = $this->categoryUrlRewriteGeneratorFactory->create();
-            $this->urlRewritesSet->merge(
+            $urlRewritesSet->merge(
                 $categoryUrlRewriteGenerator->generate($childCategory, false, $rootCategoryId)
             );
         }
 
-        $result = $this->urlRewritesSet->getData();
-        $this->urlRewritesSet->resetData();
+        $result = $urlRewritesSet->getData();
+        $urlRewritesSet->resetData();
         return $result;
     }
 }
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php
index becdab0e8c1..6988efcabbb 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php
@@ -14,7 +14,7 @@ use Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory;
 use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
 use Magento\CatalogUrlRewrite\Model\Map\UrlRewriteMap;
 use Magento\Framework\App\ObjectManager;
-use Magento\UrlRewrite\Model\UrlRewritesSet;
+use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
 
 class CurrentUrlRewritesRegenerator
 {
@@ -37,28 +37,30 @@ class CurrentUrlRewritesRegenerator
     private $urlRewriteMap;
 
     /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSet;
+    private $urlRewritesSetPlaceHolder;
 
     /**
      * @param \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator
      * @param \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory $urlRewriteFactory
      * @param UrlFinderInterface $urlFinder
      * @param UrlRewriteMap|null $urlRewriteMap
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSet|null $urlRewritesSet
+     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
      */
     public function __construct(
         CategoryUrlPathGenerator $categoryUrlPathGenerator,
         UrlRewriteFactory $urlRewriteFactory,
         UrlFinderInterface $urlFinder,
         UrlRewriteMap $urlRewriteMap = null,
-        UrlRewritesSet $urlRewritesSet = null
+        UrlRewritesSetFactory $urlRewritesSetFactory = null
     ) {
         $this->categoryUrlPathGenerator = $categoryUrlPathGenerator;
         $this->urlRewriteFactory = $urlRewriteFactory;
         $this->urlRewritePlaceholder = $urlRewriteFactory->create();
         $this->urlFinder = $urlFinder;
         $this->urlRewriteMap = $urlRewriteMap ?: ObjectManager::getInstance()->get(UrlRewriteMap::class);
-        $this->urlRewritesSet = $urlRewritesSet ?: ObjectManager::getInstance()->get(UrlRewritesSet::class);
+        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
+            ->get(UrlRewritesSetFactory::class);
+        $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create();
     }
 
     /**
@@ -71,6 +73,7 @@ class CurrentUrlRewritesRegenerator
      */
     public function generate($storeId, Category $category, $rootCategoryId = null)
     {
+        $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder;
         $currentUrlRewrites = $this->urlRewriteMap->getByIdentifiers(
             $category->getEntityId(),
             $storeId,
@@ -79,15 +82,15 @@ class CurrentUrlRewritesRegenerator
         );
 
         foreach ($currentUrlRewrites as $rewrite) {
-            $this->urlRewritesSet->merge(
+            $urlRewritesSet->merge(
                 $rewrite->getIsAutogenerated()
                 ? $this->generateForAutogenerated($rewrite, $storeId, $category)
                 : $this->generateForCustom($rewrite, $storeId, $category)
             );
         }
 
-        $result = $this->urlRewritesSet->getData();
-        $this->urlRewritesSet->resetData();
+        $result = $urlRewritesSet->getData();
+        $urlRewritesSet->resetData();
         return $result;
     }
 
@@ -109,7 +112,7 @@ class CurrentUrlRewritesRegenerator
                     ->setTargetPath($targetPath)
                     ->setRedirectType(OptionProvider::PERMANENT)
                     ->setStoreId($storeId)
-                    ->setIsAutogenerated(1);
+                    ->setIsAutogenerated(0);
                 return [$generatedUrl];
             }
         }
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php
index 8d8f4f2895c..fcf434fdb53 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php
@@ -12,8 +12,8 @@ use Magento\CatalogUrlRewrite\Model\Category\CurrentUrlRewritesRegenerator;
 use Magento\CatalogUrlRewrite\Service\V1\StoreViewService;
 use Magento\Store\Model\Store;
 use Magento\Catalog\Api\CategoryRepositoryInterface;
-use Magento\UrlRewrite\Model\UrlRewritesSet;
 use Magento\Framework\App\ObjectManager;
+use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
 
 class CategoryUrlRewriteGenerator
 {
@@ -33,7 +33,7 @@ class CategoryUrlRewriteGenerator
     protected $childrenUrlRewriteGenerator;
 
     /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSet;
+    private $urlRewritesSetPlaceHolder;
 
     /**
      * @var bool
@@ -46,7 +46,7 @@ class CategoryUrlRewriteGenerator
      * @param \Magento\CatalogUrlRewrite\Model\Category\ChildrenUrlRewriteGenerator $childrenUrlRewriteGenerator
      * @param \Magento\CatalogUrlRewrite\Service\V1\StoreViewService $storeViewService
      * @param \Magento\Catalog\Api\CategoryRepositoryInterface $categoryRepository
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSet|null $urlRewritesSet
+     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
      */
     public function __construct(
         CanonicalUrlRewriteGenerator $canonicalUrlRewriteGenerator,
@@ -54,14 +54,16 @@ class CategoryUrlRewriteGenerator
         ChildrenUrlRewriteGenerator $childrenUrlRewriteGenerator,
         StoreViewService $storeViewService,
         CategoryRepositoryInterface $categoryRepository,
-        UrlRewritesSet $urlRewritesSet = null
+        UrlRewritesSetFactory $urlRewritesSetFactory = null
     ) {
         $this->storeViewService = $storeViewService;
         $this->canonicalUrlRewriteGenerator = $canonicalUrlRewriteGenerator;
         $this->childrenUrlRewriteGenerator = $childrenUrlRewriteGenerator;
         $this->currentUrlRewritesRegenerator = $currentUrlRewritesRegenerator;
         $this->categoryRepository = $categoryRepository;
-        $this->urlRewritesSet = $urlRewritesSet ?: ObjectManager::getInstance()->get(UrlRewritesSet::class);
+        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
+            ->get(UrlRewritesSetFactory::class);
+        $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create();
     }
 
     /**
@@ -94,17 +96,18 @@ class CategoryUrlRewriteGenerator
      */
     protected function generateForGlobalScope(Category $category, $overrideStoreUrls, $rootCategoryId = null)
     {
+        $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder;
         $categoryId = $category->getId();
         foreach ($category->getStoreIds() as $storeId) {
             if (!$this->isGlobalScope($storeId)
                 && $this->isOverrideUrlsForStore($storeId, $categoryId, $overrideStoreUrls)
             ) {
                 $this->updateCategoryUrlForStore($category, $storeId);
-                $this->urlRewritesSet->merge($this->generateForSpecificStoreView($category, $storeId, $rootCategoryId));
+                $urlRewritesSet->merge($this->generateForSpecificStoreView($category, $storeId, $rootCategoryId));
             }
         }
-        $result = $this->urlRewritesSet->getData();
-        $this->urlRewritesSet->resetData();
+        $result = $urlRewritesSet->getData();
+        $urlRewritesSet->resetData();
         return $result;
     }
 
@@ -162,17 +165,18 @@ class CategoryUrlRewriteGenerator
      */
     protected function generateForSpecificStoreView(Category $category, $storeId, $rootCategoryId = null)
     {
-        $this->urlRewritesSet->merge(
+        $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder;
+        $urlRewritesSet->merge(
             $this->canonicalUrlRewriteGenerator->generate($storeId, $category)
         );
-        $this->urlRewritesSet->merge(
+        $urlRewritesSet->merge(
             $this->childrenUrlRewriteGenerator->generate($storeId, $category, $rootCategoryId)
         );
-        $this->urlRewritesSet->merge(
+        $urlRewritesSet->merge(
             $this->currentUrlRewritesRegenerator->generate($storeId, $category, $rootCategoryId)
         );
-        $result = $this->urlRewritesSet->getData();
-        $this->urlRewritesSet->resetData();
+        $result = $urlRewritesSet->getData();
+        $urlRewritesSet->resetData();
         return $result;
     }
 }
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php
index 94acb5b592b..1f85f5a3d27 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php
@@ -16,7 +16,7 @@ use Magento\CatalogUrlRewrite\Model\ProductUrlPathGenerator;
 use Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory;
 use Magento\CatalogUrlRewrite\Model\Map\UrlRewriteMap;
 use Magento\Framework\App\ObjectManager;
-use Magento\UrlRewrite\Model\UrlRewritesSet;
+use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
 
 /**
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -42,28 +42,30 @@ class CurrentUrlRewritesRegenerator
     private $urlRewriteMap;
 
     /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSet;
+    private $urlRewritesSetPlaceHolder;
 
     /**
      * @param UrlFinderInterface $urlFinder
      * @param ProductUrlPathGenerator $productUrlPathGenerator
      * @param UrlRewriteFactory $urlRewriteFactory
      * @param UrlRewriteMap|null $urlRewriteMap
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSet|null $urlRewritesSet
+     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
      */
     public function __construct(
         UrlFinderInterface $urlFinder,
         ProductUrlPathGenerator $productUrlPathGenerator,
         UrlRewriteFactory $urlRewriteFactory,
         UrlRewriteMap $urlRewriteMap = null,
-        UrlRewritesSet $urlRewritesSet = null
+        UrlRewritesSetFactory $urlRewritesSetFactory = null
     ) {
         $this->urlFinder = $urlFinder;
         $this->productUrlPathGenerator = $productUrlPathGenerator;
         $this->urlRewriteFactory = $urlRewriteFactory;
         $this->urlRewritePlaceholder = $urlRewriteFactory->create();
         $this->urlRewriteMap = $urlRewriteMap ?: ObjectManager::getInstance()->get(UrlRewriteMap::class);
-        $this->urlRewritesSet = $urlRewritesSet ?: ObjectManager::getInstance()->get(UrlRewritesSet::class);
+        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
+            ->get(UrlRewritesSetFactory::class);
+        $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create();
     }
 
     /**
@@ -77,6 +79,7 @@ class CurrentUrlRewritesRegenerator
      */
     public function generate($storeId, Product $product, ObjectRegistry $productCategories, $rootCategoryId = null)
     {
+        $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder;
         $currentUrlRewrites = $this->urlRewriteMap->getByIdentifiers(
             $product->getEntityId(),
             $storeId,
@@ -89,15 +92,15 @@ class CurrentUrlRewritesRegenerator
             if ($category === false) {
                 continue;
             }
-            $this->urlRewritesSet->merge(
+            $urlRewritesSet->merge(
                 $currentUrlRewrite->getIsAutogenerated()
                 ? $this->generateForAutogenerated($currentUrlRewrite, $storeId, $category, $product)
                 : $this->generateForCustom($currentUrlRewrite, $storeId, $category, $product)
             );
         }
 
-        $result = $this->urlRewritesSet->getData();
-        $this->urlRewritesSet->resetData();
+        $result = $urlRewritesSet->getData();
+        $urlRewritesSet->resetData();
         return $result;
     }
 
@@ -121,7 +124,7 @@ class CurrentUrlRewritesRegenerator
                     ->setRedirectType(OptionProvider::PERMANENT)
                     ->setStoreId($storeId)
                     ->setDescription($url->getDescription())
-                    ->setIsAutogenerated(1)
+                    ->setIsAutogenerated(0)
                     ->setMetadata($url->getMetadata());
                 return [$generatedUrl];
             }
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php
index 4ed01e4909c..cc64dc99962 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php
@@ -14,7 +14,7 @@ use Magento\CatalogUrlRewrite\Model\Product\AnchorUrlRewriteGenerator;
 use Magento\CatalogUrlRewrite\Service\V1\StoreViewService;
 use Magento\Store\Model\Store;
 use Magento\Store\Model\StoreManagerInterface;
-use Magento\UrlRewrite\Model\UrlRewritesSet;
+use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
 use Magento\Framework\App\ObjectManager;
 
 /**
@@ -59,7 +59,7 @@ class ProductScopeRewriteGenerator
     private $canonicalUrlRewriteGenerator;
 
     /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSet;
+    private $urlRewritesSetPlaceHolder;
 
     /**
      * @param StoreViewService $storeViewService
@@ -69,7 +69,7 @@ class ProductScopeRewriteGenerator
      * @param CategoriesUrlRewriteGenerator $categoriesUrlRewriteGenerator
      * @param CurrentUrlRewritesRegenerator $currentUrlRewritesRegenerator
      * @param AnchorUrlRewriteGenerator $anchorUrlRewriteGenerator
-     * @param UrlRewritesSet|null $urlRewritesSet
+     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
      */
     public function __construct(
         StoreViewService $storeViewService,
@@ -79,7 +79,7 @@ class ProductScopeRewriteGenerator
         CategoriesUrlRewriteGenerator $categoriesUrlRewriteGenerator,
         CurrentUrlRewritesRegenerator $currentUrlRewritesRegenerator,
         AnchorUrlRewriteGenerator $anchorUrlRewriteGenerator,
-        UrlRewritesSet $urlRewritesSet = null
+        UrlRewritesSetFactory $urlRewritesSetFactory = null
     ) {
         $this->storeViewService = $storeViewService;
         $this->storeManager = $storeManager;
@@ -88,7 +88,9 @@ class ProductScopeRewriteGenerator
         $this->categoriesUrlRewriteGenerator = $categoriesUrlRewriteGenerator;
         $this->currentUrlRewritesRegenerator = $currentUrlRewritesRegenerator;
         $this->anchorUrlRewriteGenerator = $anchorUrlRewriteGenerator;
-        $this->urlRewritesSet = $urlRewritesSet ?: ObjectManager::getInstance()->get(UrlRewritesSet::class);
+        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
+            ->get(UrlRewritesSetFactory::class);
+        $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create();
     }
 
     /**
@@ -113,6 +115,7 @@ class ProductScopeRewriteGenerator
     public function generateForGlobalScope($productCategories, Product $product, $rootCategoryId = null)
     {
         $productId = $product->getEntityId();
+        $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder;
 
         foreach ($product->getStoreIds() as $id) {
             if (!$this->isGlobalScope($id) &&
@@ -121,14 +124,14 @@ class ProductScopeRewriteGenerator
                     $productId,
                     Product::ENTITY
                 )) {
-                $this->urlRewritesSet->merge(
+                $urlRewritesSet->merge(
                     $this->generateForSpecificStoreView($id, $productCategories, $product, $rootCategoryId)
                 );
             }
         }
 
-        $result = $this->urlRewritesSet->getData();
-        $this->urlRewritesSet->resetData();
+        $result = $urlRewritesSet->getData();
+        $urlRewritesSet->resetData();
         return $result;
     }
 
@@ -143,6 +146,7 @@ class ProductScopeRewriteGenerator
      */
     public function generateForSpecificStoreView($storeId, $productCategories, Product $product, $rootCategoryId = null)
     {
+        $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder;
         $categories = [];
         foreach ($productCategories as $category) {
             if ($this->isCategoryProperForGenerating($category, $storeId)) {
@@ -151,13 +155,13 @@ class ProductScopeRewriteGenerator
         }
         $productCategories = $this->objectRegistryFactory->create(['entities' => $categories]);
 
-        $this->urlRewritesSet->merge(
+        $urlRewritesSet->merge(
             $this->canonicalUrlRewriteGenerator->generate($storeId, $product)
         );
-        $this->urlRewritesSet->merge(
+        $urlRewritesSet->merge(
             $this->categoriesUrlRewriteGenerator->generate($storeId, $product, $productCategories)
         );
-        $this->urlRewritesSet->merge(
+        $urlRewritesSet->merge(
             $this->currentUrlRewritesRegenerator->generate(
                 $storeId,
                 $product,
@@ -165,12 +169,12 @@ class ProductScopeRewriteGenerator
                 $rootCategoryId
             )
         );
-        $this->urlRewritesSet->merge(
+        $urlRewritesSet->merge(
             $this->anchorUrlRewriteGenerator->generate($storeId, $product, $productCategories)
         );
 
-        $result = $this->urlRewritesSet->getData();
-        $this->urlRewritesSet->resetData();
+        $result = $urlRewritesSet->getData();
+        $urlRewritesSet->resetData();
         return $result;
     }
 
diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php b/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php
index 065293a7041..2d15d4f6273 100644
--- a/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php
+++ b/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php
@@ -21,7 +21,7 @@ use Magento\UrlRewrite\Model\UrlFinderInterface;
 use Magento\Framework\Event\ObserverInterface;
 use Magento\Catalog\Model\Product\Visibility;
 use Magento\Framework\App\ObjectManager;
-use Magento\UrlRewrite\Model\UrlRewritesSet;
+use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
 
 /**
  * Class AfterImportDataObserver
@@ -100,7 +100,7 @@ class AfterImportDataObserver implements ObserverInterface
     ];
 
     /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSet;
+    private $urlRewritesSetPlaceHolder;
 
     /**
      * @param \Magento\Catalog\Model\ProductFactory $catalogProductFactory
@@ -111,7 +111,7 @@ class AfterImportDataObserver implements ObserverInterface
      * @param UrlPersistInterface $urlPersist
      * @param UrlRewriteFactory $urlRewriteFactory
      * @param UrlFinderInterface $urlFinder
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSet|null $urlRewritesSet
+     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
      * @throws \InvalidArgumentException
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
@@ -124,7 +124,7 @@ class AfterImportDataObserver implements ObserverInterface
         UrlPersistInterface $urlPersist,
         UrlRewriteFactory $urlRewriteFactory,
         UrlFinderInterface $urlFinder,
-        UrlRewritesSet $urlRewritesSet = null
+        UrlRewritesSetFactory $urlRewritesSetFactory = null
     ) {
         $this->urlPersist = $urlPersist;
         $this->catalogProductFactory = $catalogProductFactory;
@@ -134,7 +134,9 @@ class AfterImportDataObserver implements ObserverInterface
         $this->storeManager = $storeManager;
         $this->urlRewriteFactory = $urlRewriteFactory;
         $this->urlFinder = $urlFinder;
-        $this->urlRewritesSet = $urlRewritesSet ?: ObjectManager::getInstance()->get(UrlRewritesSet::class);
+        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
+            ->get(UrlRewritesSetFactory::class);
+        $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create();
     }
 
     /**
@@ -267,16 +269,17 @@ class AfterImportDataObserver implements ObserverInterface
      */
     protected function generateUrls()
     {
-        $this->urlRewritesSet->merge($this->canonicalUrlRewriteGenerate());
-        $this->urlRewritesSet->merge($this->categoriesUrlRewriteGenerate());
-        $this->urlRewritesSet->merge($this->currentUrlRewritesRegenerate());
+        $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder;
+        $urlRewritesSet->merge($this->canonicalUrlRewriteGenerate());
+        $urlRewritesSet->merge($this->categoriesUrlRewriteGenerate());
+        $urlRewritesSet->merge($this->currentUrlRewritesRegenerate());
         $this->productCategories = null;
 
         unset($this->products);
         $this->products = [];
 
-        $result = $this->urlRewritesSet->getData();
-        $this->urlRewritesSet->resetData();
+        $result = $urlRewritesSet->getData();
+        $urlRewritesSet->resetData();
         return $result;
     }
 
diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php b/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php
index 92ceff1c434..4c52725e5e9 100644
--- a/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php
+++ b/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php
@@ -13,7 +13,7 @@ use Magento\Framework\App\ObjectManager;
 use Magento\Framework\Event\Observer as EventObserver;
 use Magento\UrlRewrite\Model\UrlPersistInterface;
 use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
-use Magento\UrlRewrite\Model\UrlRewritesSet;
+use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
 
 class UrlRewriteHandler
 {
@@ -41,7 +41,7 @@ class UrlRewriteHandler
     private $categoryBasedProductRewriteGenerator;
 
     /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSet;
+    private $urlRewritesSetPlaceHolder;
 
     /**
      * @param \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider $childrenCategoriesProvider
@@ -49,7 +49,7 @@ class UrlRewriteHandler
      * @param ProductUrlRewriteGenerator $productUrlRewriteGenerator
      * @param UrlPersistInterface $urlPersist
      * @param \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSet|null $urlRewritesSet
+     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
      */
     public function __construct(
         \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider $childrenCategoriesProvider,
@@ -57,14 +57,16 @@ class UrlRewriteHandler
         ProductUrlRewriteGenerator $productUrlRewriteGenerator,
         UrlPersistInterface $urlPersist,
         \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
-        UrlRewritesSet $urlRewritesSet = null
+        UrlRewritesSetFactory $urlRewritesSetFactory = null
     ) {
         $this->childrenCategoriesProvider = $childrenCategoriesProvider;
         $this->categoryUrlRewriteGenerator = $categoryUrlRewriteGenerator;
         $this->productUrlRewriteGenerator = $productUrlRewriteGenerator;
         $this->urlPersist = $urlPersist;
         $this->productCollectionFactory = $productCollectionFactory;
-        $this->urlRewritesSet = $urlRewritesSet ?: ObjectManager::getInstance()->get(UrlRewritesSet::class);
+        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
+            ->get(UrlRewritesSetFactory::class);
+        $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create();
     }
 
     /**
@@ -75,6 +77,7 @@ class UrlRewriteHandler
      */
     public function generateProductUrlRewrites(Category $category)
     {
+        $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder;
         $this->isSkippedProduct = [];
         $saveRewriteHistory = $category->getData('save_rewrites_history');
         $storeId = $category->getStoreId();
@@ -90,12 +93,12 @@ class UrlRewriteHandler
             foreach ($collection as $product) {
                 $product->setStoreId($storeId);
                 $product->setData('save_rewrites_history', $saveRewriteHistory);
-                $this->urlRewritesSet->merge(
+                $urlRewritesSet->merge(
                     $this->productUrlRewriteGenerator->generate($product, $category->getEntityId())
                 );
             }
         } else {
-            $this->urlRewritesSet->merge(
+            $urlRewritesSet->merge(
                 $this->getCategoryProductsUrlRewrites(
                     $category,
                     $storeId,
@@ -105,7 +108,7 @@ class UrlRewriteHandler
             );
         }
         foreach ($this->childrenCategoriesProvider->getChildren($category, true) as $childCategory) {
-            $this->urlRewritesSet->merge(
+            $urlRewritesSet->merge(
                 $this->getCategoryProductsUrlRewrites(
                     $childCategory,
                     $storeId,
@@ -115,8 +118,8 @@ class UrlRewriteHandler
             );
         }
 
-        $result = $this->urlRewritesSet->getData();
-        $this->urlRewritesSet->resetData();
+        $result = $urlRewritesSet->getData();
+        $urlRewritesSet->resetData();
         return $result;
     }
 
@@ -133,6 +136,7 @@ class UrlRewriteHandler
         $saveRewriteHistory,
         $rootCategoryId = null
     ) {
+        $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder;
         /** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $productCollection */
         $productCollection = $category->getProductCollection()
             ->addAttributeToSelect('name')
@@ -146,13 +150,13 @@ class UrlRewriteHandler
             $this->isSkippedProduct[] = $product->getId();
             $product->setStoreId($storeId);
             $product->setData('save_rewrites_history', $saveRewriteHistory);
-            $this->urlRewritesSet->merge(
+            $urlRewritesSet->merge(
                 $this->getCategoryBasedProductRewriteGenerator()->generate($product, $category, $rootCategoryId)
             );
         }
 
-        $result = $this->urlRewritesSet->getData();
-        $this->urlRewritesSet->resetData();
+        $result = $urlRewritesSet->getData();
+        $urlRewritesSet->resetData();
         return $result;
     }
 
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php
index 03812de828d..bb50afca698 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php
@@ -40,14 +40,22 @@ class ChildrenUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
         $this->categoryUrlRewriteGenerator = $this->getMockBuilder(
             \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator::class
         )->disableOriginalConstructor()->getMock();
+        $urlRewritesSetFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+            ['create'],
+            [],
+            '',
+            false
+        );
         $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
+        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
 
         $this->childrenUrlRewriteGenerator = (new ObjectManager($this))->getObject(
             \Magento\CatalogUrlRewrite\Model\Category\ChildrenUrlRewriteGenerator::class,
             [
                 'childrenCategoriesProvider' => $this->childrenCategoriesProvider,
                 'categoryUrlRewriteGeneratorFactory' => $this->categoryUrlRewriteGeneratorFactory,
-                'urlRewritesSet' => $this->urlRewritesSet
+                'urlRewritesSetFactory' => $urlRewritesSetFactory
             ]
         );
     }
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/CurrentUrlRewritesRegeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/CurrentUrlRewritesRegeneratorTest.php
index ad16a988528..cae82e325cc 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/CurrentUrlRewritesRegeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/CurrentUrlRewritesRegeneratorTest.php
@@ -50,14 +50,22 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()->getMock();
         $this->urlRewriteFactory->expects($this->once())->method('create')
             ->willReturn($this->urlRewrite);
-
+        $urlRewritesSetFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+            ['create'],
+            [],
+            '',
+            false
+        );
         $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
-        $this->currentUrlRewritesRegenerator = (new ObjectManager($this))->getObject(
+        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
+
+        $this->currentUrlRewritesRegenerator = (new ObjectManager($this))->getObject(   
             \Magento\CatalogUrlRewrite\Model\Category\CurrentUrlRewritesRegenerator::class,
             [
                 'categoryUrlPathGenerator' => $this->categoryUrlPathGenerator,
                 'urlRewriteFactory' => $this->urlRewriteFactory,
-                'urlRewritesSet' => $this->urlRewritesSet,
+                'urlRewritesSetFactory' => $urlRewritesSetFactory,
                 'urlRewriteMap' => $this->urlRewriteMap
             ]
         );
@@ -128,7 +136,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
         $this->categoryUrlPathGenerator->expects($this->once())->method('getUrlPathWithSuffix')
             ->will($this->returnValue($targetPath));
 
-        $this->prepareUrlRewriteMock($storeId, $categoryId, $requestPath, $targetPath, OptionProvider::PERMANENT, 1);
+        $this->prepareUrlRewriteMock($storeId, $categoryId, $requestPath, $targetPath, OptionProvider::PERMANENT, 0);
 
         $this->assertEquals(
             ['autogenerated.html_2' => $this->urlRewrite],
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php
index e6c035334c8..9edbf862ebe 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php
@@ -55,7 +55,15 @@ class CategoryUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()->getMock();
         $this->category = $this->getMock(\Magento\Catalog\Model\Category::class, [], [], '', false);
         $this->categoryRepository = $this->getMock(\Magento\Catalog\Api\CategoryRepositoryInterface::class);
+        $urlRewritesSetFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+            ['create'],
+            [],
+            '',
+            false
+        );
         $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
+        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
 
         $this->categoryUrlRewriteGenerator = (new ObjectManager($this))->getObject(
             \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator::class,
@@ -65,7 +73,7 @@ class CategoryUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
                 'currentUrlRewritesRegenerator' => $this->currentUrlRewritesRegenerator,
                 'storeViewService' => $this->storeViewService,
                 'categoryRepository' => $this->categoryRepository,
-                'urlRewritesSet' => $this->urlRewritesSet
+                'urlRewritesSetFactory' => $urlRewritesSetFactory
             ]
         );
     }
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/CurrentUrlRewritesRegeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/CurrentUrlRewritesRegeneratorTest.php
index c8137f94408..f093145cea5 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/CurrentUrlRewritesRegeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/CurrentUrlRewritesRegeneratorTest.php
@@ -62,13 +62,21 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
         $this->productUrlPathGenerator = $this->getMockBuilder(
             \Magento\CatalogUrlRewrite\Model\ProductUrlPathGenerator::class
         )->disableOriginalConstructor()->getMock();
+        $urlRewritesSetFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+            ['create'],
+            [],
+            '',
+            false
+        );
         $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
+        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
         $this->currentUrlRewritesRegenerator = (new ObjectManager($this))->getObject(
             \Magento\CatalogUrlRewrite\Model\Product\CurrentUrlRewritesRegenerator::class,
             [
                 'productUrlPathGenerator' => $this->productUrlPathGenerator,
                 'urlRewriteFactory' => $this->urlRewriteFactory,
-                'urlRewritesSet' => $this->urlRewritesSet,
+                'urlRewritesSetFactory' => $urlRewritesSetFactory,
                 'urlRewriteMap' => $this->urlRewriteMap
             ]
         );
@@ -134,7 +142,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
             $productId,
             $requestPath,
             $targetPath,
-            $autoGenerated,
+            0,
             OptionProvider::PERMANENT,
             [],
             $description
@@ -177,7 +185,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
             $productId,
             $requestPath,
             $targetPath,
-            $autoGenerated,
+            0,
             OptionProvider::PERMANENT,
             $metadata,
             $description
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/ProductScopeRewriteGeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/ProductScopeRewriteGeneratorTest.php
index a7f2642fd97..f3be4ee454a 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/ProductScopeRewriteGeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/ProductScopeRewriteGeneratorTest.php
@@ -64,7 +64,15 @@ class ProductScopeRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
         $this->storeViewService = $this->getMockBuilder(\Magento\CatalogUrlRewrite\Service\V1\StoreViewService::class)
             ->disableOriginalConstructor()->getMock();
         $this->storeManager = $this->getMock(StoreManagerInterface::class);
+        $urlRewritesSetFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+            ['create'],
+            [],
+            '',
+            false
+        );
         $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
+        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
 
         $this->productScopeGenerator = (new ObjectManager($this))->getObject(
             \Magento\CatalogUrlRewrite\Model\ProductScopeRewriteGenerator::class,
@@ -76,7 +84,7 @@ class ProductScopeRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
                 'objectRegistryFactory' => $this->objectRegistryFactory,
                 'storeViewService' => $this->storeViewService,
                 'storeManager' => $this->storeManager,
-                'urlRewritesSet' => $this->urlRewritesSet
+                'urlRewritesSetFactory' => $urlRewritesSetFactory
             ]
         );
     }
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php
index 271e4bf3d4f..f9cc23bceb8 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php
@@ -276,7 +276,15 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
             ->expects($this->any())
             ->method('getCategoryProcessor')
             ->willReturn($categoryProcessor);
+        $urlRewritesSetFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+            ['create'],
+            [],
+            '',
+            false
+        );
         $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
+        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
 
         $this->objectManager = new ObjectManager($this);
         $this->import = $this->objectManager->getObject(
@@ -290,7 +298,7 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
                 'urlPersist' => $this->urlPersist,
                 'urlRewriteFactory' => $this->urlRewriteFactory,
                 'urlFinder' => $this->urlFinder,
-                'urlRewritesSet' => $this->urlRewritesSet
+                'urlRewritesSetFactory' => $urlRewritesSetFactory
             ]
         );
     }
diff --git a/app/code/Magento/UrlRewrite/etc/di.xml b/app/code/Magento/UrlRewrite/etc/di.xml
index 8e426647f90..b7485a7ef21 100644
--- a/app/code/Magento/UrlRewrite/etc/di.xml
+++ b/app/code/Magento/UrlRewrite/etc/di.xml
@@ -9,5 +9,4 @@
     <preference for="Magento\UrlRewrite\Model\StorageInterface" type="Magento\UrlRewrite\Model\Storage\DbStorage"/>
     <preference for="Magento\UrlRewrite\Model\UrlFinderInterface" type="Magento\UrlRewrite\Model\Storage\DbStorage"/>
     <preference for="Magento\UrlRewrite\Model\UrlPersistInterface" type="Magento\UrlRewrite\Model\Storage\DbStorage"/>
-    <type name="Magento\UrlRewrite\Model\ArrayMerger" shared="false" />
 </config>
diff --git a/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGeneratorTest.php b/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGeneratorTest.php
index 5d3ec055385..93fe95f83cb 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGeneratorTest.php
+++ b/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGeneratorTest.php
@@ -76,12 +76,12 @@ class CategoryUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
             ['new-url.html', 'catalog/category/view/id/3', 1, 0],
             ['new-url/category-1-1.html', 'catalog/category/view/id/4', 1, 0],
             ['new-url/category-1-1/category-1-1-1.html', 'catalog/category/view/id/5', 1, 0],
-            ['category-1.html', 'new-url.html', 1, OptionProvider::PERMANENT],
-            ['category-1/category-1-1.html', 'new-url/category-1-1.html', 1, OptionProvider::PERMANENT],
+            ['category-1.html', 'new-url.html', 0, OptionProvider::PERMANENT],
+            ['category-1/category-1-1.html', 'new-url/category-1-1.html', 0, OptionProvider::PERMANENT],
             [
                 'category-1/category-1-1/category-1-1-1.html',
                 'new-url/category-1-1/category-1-1-1.html',
-                1,
+                0,
                 OptionProvider::PERMANENT
             ],
         ];
-- 
GitLab