Scheduler transaction improvement and preferences transaction removal

* Added a transaction to createAndFillShowInstancesPastPopulatedUntilDate
  to ensure two requests don't trigger duplicate repeated show instances
  in the calendar.
* Removed the transaction from setValue() in Preference and opt for
  a row-level lock instead.
This commit is contained in:
Albert Santoni 2015-09-02 10:40:38 -04:00
parent c7d926f8e8
commit 6959c459cd
2 changed files with 25 additions and 12 deletions

View file

@ -847,14 +847,24 @@ SQL;
*/
public static function createAndFillShowInstancesPastPopulatedUntilDate($needScheduleUntil)
{
//UTC DateTime object
$showsPopUntil = Application_Model_Preference::GetShowsPopulatedUntil();
//if application is requesting shows past our previous populated until date, generate shows up until this point.
if (is_null($showsPopUntil) || $showsPopUntil->getTimestamp() < $needScheduleUntil->getTimestamp()) {
$service_show = new Application_Service_ShowService();
$ccShow = $service_show->delegateInstanceCreation(null, $needScheduleUntil, true);
Application_Model_Preference::SetShowsPopulatedUntil($needScheduleUntil);
$con = Propel::getConnection(CcPrefPeer::DATABASE_NAME);
try {
$con->beginTransaction();
//UTC DateTime object
$showsPopUntil = Application_Model_Preference::GetShowsPopulatedUntil();
//if application is requesting shows past our previous populated until date, generate shows up until this point.
if (is_null($showsPopUntil) || $showsPopUntil->getTimestamp() < $needScheduleUntil->getTimestamp()) {
$service_show = new Application_Service_ShowService();
$ccShow = $service_show->delegateInstanceCreation(null, $needScheduleUntil, true);
Application_Model_Preference::SetShowsPopulatedUntil($needScheduleUntil);
}
$con->commit();
} catch (Exception $e) {
$con->rollBack();
throw $e;
}
}
/**