use PRAGMA synchronous = OFF in sqlite to avoid hard drive spin up. fixes #2183

This commit is contained in:
Yann Leboulanger 2006-11-10 18:32:38 +00:00
parent d701c1ef3d
commit 1add317cc9
1 changed files with 23 additions and 7 deletions

View File

@ -88,15 +88,33 @@ class Logger:
return return
self.init_vars() self.init_vars()
def init_vars(self): def close_db(self):
# if locked, wait up to 20 sec to unlock
# before raise (hopefully should be enough)
if self.con: if self.con:
self.con.close() self.con.close()
self.con = None
self.cur = None
def open_db(self):
self.close_db()
# if locked, wait up to 20 sec to unlock
# before raise (hopefully should be enough)
self.con = sqlite.connect(LOG_DB_PATH, timeout = 20.0, self.con = sqlite.connect(LOG_DB_PATH, timeout = 20.0,
isolation_level = 'IMMEDIATE') isolation_level = 'IMMEDIATE')
self.cur = self.con.cursor() self.cur = self.con.cursor()
self.set_synchronous(False)
def set_synchronous(self, sync):
try:
if sync:
self.cur.execute("PRAGMA synchronous = NORMAL")
else:
self.cur.execute("PRAGMA synchronous = OFF")
except sqlite.Error, e:
gajim.log.debug("Failed to set_synchronous(%s): %s" % (sync, str(e)))
def init_vars(self):
self.open_db()
self.get_jids_already_in_db() self.get_jids_already_in_db()
def get_jids_already_in_db(self): def get_jids_already_in_db(self):
@ -327,10 +345,8 @@ class Logger:
ROOM_JID/nick if pm-related.''' ROOM_JID/nick if pm-related.'''
if self.jids_already_in == []: # only happens if we just created the db if self.jids_already_in == []: # only happens if we just created the db
self.con = sqlite.connect(LOG_DB_PATH, timeout = 20.0, self.open_db()
isolation_level = 'IMMEDIATE')
self.cur = self.con.cursor()
jid = jid.lower() jid = jid.lower()
contact_name_col = None # holds nickname for kinds gcstatus, gc_msg contact_name_col = None # holds nickname for kinds gcstatus, gc_msg
# message holds the message unless kind is status or gcstatus, # message holds the message unless kind is status or gcstatus,