BF: Add threading lock to database

pull/613/head
Steven Hiscocks 2014-02-09 23:16:36 +00:00
parent 530cd53add
commit a9f0545d8f
1 changed files with 5 additions and 2 deletions

View File

@ -28,6 +28,7 @@ import sqlite3
import json import json
import locale import locale
from functools import wraps from functools import wraps
from threading import Lock
from .mytime import MyTime from .mytime import MyTime
from .ticket import FailTicket from .ticket import FailTicket
@ -51,6 +52,7 @@ else:
def commitandrollback(f): def commitandrollback(f):
@wraps(f) @wraps(f)
def wrapper(self, *args, **kwargs): def wrapper(self, *args, **kwargs):
with self._lock: # Threading lock
with self._db: # Auto commit and rollback on exception with self._db: # Auto commit and rollback on exception
return f(self, self._db.cursor(), *args, **kwargs) return f(self, self._db.cursor(), *args, **kwargs)
return wrapper return wrapper
@ -92,6 +94,7 @@ class Fail2BanDb(object):
def __init__(self, filename, purgeAge=24*60*60): def __init__(self, filename, purgeAge=24*60*60):
try: try:
self._lock = Lock()
self._db = sqlite3.connect( self._db = sqlite3.connect(
filename, check_same_thread=False, filename, check_same_thread=False,
detect_types=sqlite3.PARSE_DECLTYPES) detect_types=sqlite3.PARSE_DECLTYPES)