/** * @param \Magento\Catalog\Api\ProductRepositoryInterface $subject * @param callable $proceed * @param string $productSku * @return bool * @throws \Exception * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function aroundDeleteById(\Magento\Catalog\Api\ProductRepositoryInterface $subject, \Closure $proceed, $productSku) { $this->resourceModel->beginTransaction(); try { /** @var bool $result */ $result = $proceed($productSku); $this->resourceModel->commit(); return $result; } catch (\Exception $e) { $this->resourceModel->rollBack(); throw $e; } }
/** * @param ResourceProduct $productResource * @param \Closure $proceed * @param AbstractModel $product * @return ResourceProduct * @throws \Exception */ private function addCommitCallback(ResourceProduct $productResource, \Closure $proceed, AbstractModel $product) { try { $productResource->beginTransaction(); $result = $proceed($product); $productResource->addCommitCallback(function () use($product) { $this->reindexRow($product->getEntityId()); }); $productResource->commit(); } catch (\Exception $e) { $productResource->rollBack(); throw $e; } return $result; }
/** * {@inheritdoc} */ public function rollBack() { $pluginInfo = $this->pluginList->getNext($this->subjectType, 'rollBack'); if (!$pluginInfo) { return parent::rollBack(); } else { return $this->___callPlugins('rollBack', func_get_args(), $pluginInfo); } }