From ebe4f00c6bc54034e765a905b39b7449f1253b1a Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Mon, 28 Oct 2013 23:20:42 +0100 Subject: [PATCH] Fix doctrine transaction in lazaret patch --- lib/classes/patch/370a7.php | 88 ++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/lib/classes/patch/370a7.php b/lib/classes/patch/370a7.php index 72010cec41..1c37f52ba6 100644 --- a/lib/classes/patch/370a7.php +++ b/lib/classes/patch/370a7.php @@ -81,71 +81,71 @@ class patch_370a7 implements patchInterface $this->truncateTable($app['EM'], 'Entities\\LazaretFile'); $this->truncateTable($app['EM'], 'Entities\\LazaretSession'); - // suspend auto-commit - $app['EM']->getConnection()->beginTransaction(); + $i = 0; - try { - foreach ($rs as $row) { + foreach ($rs as $row) { - $filePath = $app['root.path'] . '/tmp/lazaret/' . $row['filepath']; + $filePath = $app['root.path'] . '/tmp/lazaret/' . $row['filepath']; - if (file_exists($filePath)) { + if (file_exists($filePath)) { - $spec = new ImageSpec(); + $spec = new ImageSpec(); - $spec->setResizeMode(ImageSpec::RESIZE_MODE_INBOUND_FIXEDRATIO); - $spec->setDimensions(375, 275); + $spec->setResizeMode(ImageSpec::RESIZE_MODE_INBOUND_FIXEDRATIO); + $spec->setDimensions(375, 275); - $thumbPath = $app['root.path'] . '/tmp/lazaret/' . sprintf("thumb_%s", $row['filepath']); + $thumbPath = $app['root.path'] . '/tmp/lazaret/' . sprintf("thumb_%s", $row['filepath']); - try { - $app['media-alchemyst']->turnInto($filePath, $thumbPath, $spec); - } catch (MediaAlchemystException $e) { + try { + $app['media-alchemyst']->turnInto($filePath, $thumbPath, $spec); + } catch (MediaAlchemystException $e) { - } + } - $media = $app['mediavorus']->guess($filePath); + $media = $app['mediavorus']->guess($filePath); - $collection = \collection::get_from_base_id($app, $row['base_id']); + $collection = \collection::get_from_base_id($app, $row['base_id']); - $borderFile = new \Alchemy\Phrasea\Border\File($app, $media, $collection); + $borderFile = new \Alchemy\Phrasea\Border\File($app, $media, $collection); - $lazaretSession = new \Entities\LazaretSession(); - $lazaretSession->setUsrId($row['usr_id']); + $lazaretSession = new \Entities\LazaretSession(); + $lazaretSession->setUsrId($row['usr_id']); - $lazaretFile = new \Entities\LazaretFile(); - $lazaretFile->setBaseId($row['base_id']); + $lazaretFile = new \Entities\LazaretFile(); + $lazaretFile->setBaseId($row['base_id']); - if (null === $row['uuid']) { - $uuid = $borderFile->getUUID(true); - $lazaretFile->setUuid($uuid); - } else { - $lazaretFile->setUuid($row['uuid']); - } + if (null === $row['uuid']) { + $uuid = $borderFile->getUUID(true); + $lazaretFile->setUuid($uuid); + } else { + $lazaretFile->setUuid($row['uuid']); + } - if (null === $row['sha256']) { - $sha256 = $media->getHash('sha256'); - $lazaretFile->setSha256($sha256); - } else { - $lazaretFile->setSha256($row['sha256']); - } + if (null === $row['sha256']) { + $sha256 = $media->getHash('sha256'); + $lazaretFile->setSha256($sha256); + } else { + $lazaretFile->setSha256($row['sha256']); + } - $lazaretFile->setOriginalName($row['filename']); - $lazaretFile->setFilename($row['filepath']); - $lazaretFile->setThumbFilename(pathinfo($thumbPath), PATHINFO_BASENAME); - $lazaretFile->setCreated(new \DateTime($row['created_on'])); - $lazaretFile->setSession($lazaretSession); + $lazaretFile->setOriginalName($row['filename']); + $lazaretFile->setFilename($row['filepath']); + $lazaretFile->setThumbFilename(pathinfo($thumbPath), PATHINFO_BASENAME); + $lazaretFile->setCreated(new \DateTime($row['created_on'])); + $lazaretFile->setSession($lazaretSession); - $app['EM']->persist($lazaretFile); + $app['EM']->persist($lazaretFile); + + if (0 === ++$i % 100) { + $app['EM']->flush(); + $app['EM']->clear(); } } - - $app['EM']->flush(); - } catch (\Exception $e) { - $app['EM']->getConnection()->rollback(); - $app['EM']->close(); } + $app['EM']->flush(); + $app['EM']->clear(); + $stmt->closeCursor(); return;