diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index f2eeee8a4..e96d4e888 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -38,7 +38,11 @@ class Application_Model_Preference $result = Application_Common_Database::prepareAndExecute($sql, $paramMap, 'column'); $paramMap = array(); - if ($result == 1) { + if ($result > 1) { + //this case should not happen. + throw new Exception("Invalid number of results returned. Should be ". + "0 or 1, but is '$result' instead"); + } elseif ($result == 1) { // result found if (is_null($id) || !$isUserValue) { // system pref @@ -80,7 +84,7 @@ class Application_Model_Preference } catch (Exception $e) { header('HTTP/1.0 503 Service Unavailable'); - Logging::info("Could not connect to database: ".$e->getMessage()); + Logging::info("Database error: ".$e->getMessage()); exit; } diff --git a/python_apps/pypo/pypofetch.py b/python_apps/pypo/pypofetch.py index 20212be51..38a72f363 100644 --- a/python_apps/pypo/pypofetch.py +++ b/python_apps/pypo/pypofetch.py @@ -432,6 +432,7 @@ class PypoFetch(Thread): for key in media: media_item = media[key] if (media_item['type'] == 'file'): + self.sanity_check_media_item(media_item) fileExt = os.path.splitext(media_item['uri'])[1] dst = os.path.join(download_dir, unicode(media_item['id']) + fileExt) media_item['dst'] = dst @@ -455,6 +456,20 @@ class PypoFetch(Thread): try: self.cache_cleanup(media) except Exception, e: self.logger.error("%s", e) + #do basic validation of file parameters. Useful for debugging + #purposes + def sanity_check_media_item(self, media_item): + start = datetime.strptime(media_item['start'], "%Y-%m-%d-%H-%M-%S") + end = datetime.strptime(media_item['end'], "%Y-%m-%d-%H-%M-%S") + + length1 = (end - start).total_seconds() + length2 = media_item['cue_out'] - media_item['cue_in'] + + if abs(length2 - length1) > 1: + self.logger.error("end - start length: %s", length1) + self.logger.error("cue_out - cue_in length: %s", length2) + self.logger.error("Two lengths are not equal!!!") + def is_file_opened(self, path): #Capture stderr to avoid polluting py-interpreter.log proc = Popen(["lsof", path], stdout=PIPE, stderr=PIPE)