Example #1
0
 /**
  * Negotiates the migration process
  *
  * @return void
  *
  * @throws MigrationException If something went wrong with the involved
  *                            components
  */
 public function negotiate()
 {
     // This is a workaround for PHP5.5, @see https://github.com/sebastianbergmann/phpunit-mock-objects/issues/143#issuecomment-108148498
     $catchedException = null;
     try {
         $this->lock->acquire();
         $this->executeMigrations();
     } catch (LockingException $exc) {
         $this->logger->emergency($exc->getMessage());
         $catchedException = $exc;
     } catch (TopologyViolationException $exc) {
         $this->logger->emergency('The version to migrate to is older than the current one.');
         $catchedException = $exc;
     } catch (MigrationException $exc) {
         $this->logger->emergency('Migration of version ' . $exc->getCode() . ' failed.', array($exc->getMessage()));
         $catchedException = $exc;
     }
     $this->lock->release();
     if (!is_null($catchedException)) {
         throw $catchedException;
     }
 }