From e55462f47bc9c4023bbbcc11c45f9253f47c3a03 Mon Sep 17 00:00:00 2001 From: Prinz23 Date: Tue, 15 Mar 2016 17:34:58 +0100 Subject: [PATCH] Fix ensures internal buffer of a downloaded file is written to disk. --- CHANGES.md | 7 ++++++- sickbeard/databases/mainDB.py | 14 +++++++++++++- sickbeard/db.py | 19 +++++++++++++++++-- sickbeard/helpers.py | 1 + 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 55899c41..a57eba66 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,9 @@ -### 0.11.7 (2016-03-06 12:30:00 UTC) +### 0.11.8 (2016-03-16 12:50:00 UTC) + +* Fix ensures internal buffer of a downloaded file is written to disk + + +### 0.11.7 (2016-03-06 12:30:00 UTC) * Fix Torrenting provider diff --git a/sickbeard/databases/mainDB.py b/sickbeard/databases/mainDB.py index c9388933..88536b35 100644 --- a/sickbeard/databases/mainDB.py +++ b/sickbeard/databases/mainDB.py @@ -977,6 +977,18 @@ class Migrate41(db.SchemaUpgrade): return self.checkDBVersion() +# 4301 -> 10001 +class Migrate4301(db.SchemaUpgrade): + def execute(self): + db.backup_database('sickbeard.db', self.checkDBVersion()) + + logger.log(u'Dropping redundant column') + self.dropColumn('db_version', 'db_minor_version') + + self.setDBVersion(10001) + return self.checkDBVersion() + + # 5816 - 5818 -> 15 class MigrateUpstream(db.SchemaUpgrade): def execute(self): @@ -1046,4 +1058,4 @@ class AddTvShowTags(db.SchemaUpgrade): self.addColumn('tv_shows', 'tag', 'TEXT', 'Show List') self.setDBVersion(20003) - return self.checkDBVersion() \ No newline at end of file + return self.checkDBVersion() diff --git a/sickbeard/db.py b/sickbeard/db.py index f6a1be14..fcb4a3c7 100644 --- a/sickbeard/db.py +++ b/sickbeard/db.py @@ -28,6 +28,7 @@ import sickbeard from sickbeard import encodingKludge as ek from sickbeard import logger from sickbeard.exceptions import ex +import helpers db_lock = threading.Lock() @@ -48,8 +49,15 @@ def dbFilename(filename='sickbeard.db', suffix=None): class DBConnection(object): def __init__(self, filename='sickbeard.db', suffix=None, row_type=None): + + db_src = dbFilename(filename) + if not os.path.isfile(db_src): + db_alt = dbFilename('sickrage.db') + if os.path.isfile(db_alt): + helpers.copyFile(db_alt, db_src) + self.filename = filename - self.connection = sqlite3.connect(dbFilename(filename), 20) + self.connection = sqlite3.connect(db_src, 20) if row_type == 'dict': self.connection.row_factory = self._dict_factory @@ -67,6 +75,9 @@ class DBConnection(object): return 0 if result: + if self.hasColumn('db_version', 'db_minor_version'): + minor = self.select('SELECT db_minor_version FROM db_version') + return int(result[0]['db_version']) * 100 + int(minor[0]['db_minor_version']) return int(result[0]['db_version']) else: return 0 @@ -411,6 +422,10 @@ def MigrationCode(myDB): 40: sickbeard.mainDB.BumpDatabaseVersion, 41: sickbeard.mainDB.Migrate41, 42: sickbeard.mainDB.Migrate41, + 43: sickbeard.mainDB.Migrate41, + 44: sickbeard.mainDB.Migrate41, + + 4301: sickbeard.mainDB.Migrate4301, 5816: sickbeard.mainDB.MigrateUpstream, 5817: sickbeard.mainDB.MigrateUpstream, @@ -457,4 +472,4 @@ def backup_database(filename, version): if not sickbeard.helpers.backupVersionedFile(dbFilename(filename), version): logger.log_error_and_exit(u'Database backup failed, abort upgrading database') else: - logger.log(u'Proceeding with upgrade') \ No newline at end of file + logger.log(u'Proceeding with upgrade') diff --git a/sickbeard/helpers.py b/sickbeard/helpers.py index e0cbb258..0d2802cc 100644 --- a/sickbeard/helpers.py +++ b/sickbeard/helpers.py @@ -1235,6 +1235,7 @@ def download_file(url, filename, session=None): if chunk: fp.write(chunk) fp.flush() + os.fsync(fp.fileno()) chmodAsParent(filename) except requests.exceptions.HTTPError as e: