Wrap Kodi DB transactions explicitly
This commit is contained in:
parent
48f5d67d63
commit
be45d914d3
3 changed files with 25 additions and 12 deletions
|
@ -56,10 +56,11 @@ class ItemBase(object):
|
||||||
"""
|
"""
|
||||||
self.plexconn = utils.kodi_sql('plex')
|
self.plexconn = utils.kodi_sql('plex')
|
||||||
self.plexcursor = self.plexconn.cursor()
|
self.plexcursor = self.plexconn.cursor()
|
||||||
self.kodiconn = utils.kodi_sql('video')
|
|
||||||
self.kodicursor = self.kodiconn.cursor()
|
|
||||||
self.artconn = utils.kodi_sql('texture')
|
self.artconn = utils.kodi_sql('texture')
|
||||||
self.artcursor = self.artconn.cursor()
|
self.artcursor = self.artconn.cursor()
|
||||||
|
self.kodiconn = utils.kodi_sql('video', writer=True)
|
||||||
|
self.kodicursor = self.kodiconn.cursor()
|
||||||
|
self.kodicursor.execute('BEGIN')
|
||||||
self.plexdb = PlexDB(self.plexcursor)
|
self.plexdb = PlexDB(self.plexcursor)
|
||||||
self.kodidb = KodiVideoDB(texture_db=True,
|
self.kodidb = KodiVideoDB(texture_db=True,
|
||||||
cursor=self.kodicursor,
|
cursor=self.kodicursor,
|
||||||
|
@ -71,13 +72,20 @@ class ItemBase(object):
|
||||||
Make sure DB changes are committed and connection to DB is closed.
|
Make sure DB changes are committed and connection to DB is closed.
|
||||||
"""
|
"""
|
||||||
self.plexconn.commit()
|
self.plexconn.commit()
|
||||||
self.kodiconn.commit()
|
|
||||||
self.artconn.commit()
|
|
||||||
self.plexconn.close()
|
self.plexconn.close()
|
||||||
self.kodiconn.close()
|
self.artconn.commit()
|
||||||
self.artconn.close()
|
self.artconn.close()
|
||||||
|
self.kodicursor.execute('END TRANSACTION')
|
||||||
|
self.kodiconn.close()
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
def commit(self):
|
||||||
|
self.plexconn.commit()
|
||||||
|
self.artconn.commit()
|
||||||
|
self.kodicursor.execute('END TRANSACTION')
|
||||||
|
self.kodicursor.execute('PRAGMA wal_checkpoint(FULL);')
|
||||||
|
self.kodicursor.execute('BEGIN TRANSACTION')
|
||||||
|
|
||||||
def set_fanart(self, artworks, kodi_id, kodi_type):
|
def set_fanart(self, artworks, kodi_id, kodi_type):
|
||||||
"""
|
"""
|
||||||
Writes artworks [dict containing only set artworks] to the Kodi art DB
|
Writes artworks [dict containing only set artworks] to the Kodi art DB
|
||||||
|
|
|
@ -123,12 +123,12 @@ class ProcessMetadata(backgroundthread.KillableThread, common.libsync_mixin):
|
||||||
self.processed += 1
|
self.processed += 1
|
||||||
self.update_progressbar()
|
self.update_progressbar()
|
||||||
self.current += 1
|
self.current += 1
|
||||||
if self.processed == 500:
|
if self.processed == 200:
|
||||||
self.processed = 0
|
self.processed = 0
|
||||||
context.kodiconn.commit()
|
context.commit()
|
||||||
context.artconn.commit()
|
|
||||||
context.plexconn.commit()
|
|
||||||
self.queue.task_done()
|
self.queue.task_done()
|
||||||
|
if section.plex_type == 'episode' and self.current == 1000:
|
||||||
|
break
|
||||||
profile.disable()
|
profile.disable()
|
||||||
string_io = StringIO()
|
string_io = StringIO()
|
||||||
stats = Stats(profile, stream=string_io).sort_stats('cumulative')
|
stats = Stats(profile, stream=string_io).sort_stats('cumulative')
|
||||||
|
|
|
@ -475,7 +475,7 @@ def unix_timestamp(seconds_into_the_future=None):
|
||||||
return int((future - EPOCH).total_seconds())
|
return int((future - EPOCH).total_seconds())
|
||||||
|
|
||||||
|
|
||||||
def kodi_sql(media_type=None):
|
def kodi_sql(media_type=None, writer=False):
|
||||||
"""
|
"""
|
||||||
Open a connection to the Kodi database.
|
Open a connection to the Kodi database.
|
||||||
media_type: 'video' (standard if not passed), 'plex', 'music', 'texture'
|
media_type: 'video' (standard if not passed), 'plex', 'music', 'texture'
|
||||||
|
@ -488,6 +488,11 @@ def kodi_sql(media_type=None):
|
||||||
db_path = v.DB_TEXTURE_PATH
|
db_path = v.DB_TEXTURE_PATH
|
||||||
else:
|
else:
|
||||||
db_path = v.DB_VIDEO_PATH
|
db_path = v.DB_VIDEO_PATH
|
||||||
|
if writer:
|
||||||
|
conn = connect(db_path, timeout=5.0, isolation_level=None)
|
||||||
|
conn.execute('PRAGMA journal_mode=WAL')
|
||||||
|
# conn.execute('BEGIN TRANSACTION')
|
||||||
|
else:
|
||||||
conn = connect(db_path, timeout=5.0)
|
conn = connect(db_path, timeout=5.0)
|
||||||
conn.execute('PRAGMA journal_mode=WAL')
|
conn.execute('PRAGMA journal_mode=WAL')
|
||||||
return conn
|
return conn
|
||||||
|
|
Loading…
Reference in a new issue