diff --git a/docker-mgmt/supervisor.conf b/docker-mgmt/supervisor.conf index 5d9960d..3278f04 100644 --- a/docker-mgmt/supervisor.conf +++ b/docker-mgmt/supervisor.conf @@ -29,6 +29,11 @@ autostart=true autorestart=true priority=10 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 + [program:nginx] command=/usr/sbin/nginx -g 'daemon off;' autostart=true diff --git a/ums/management/db.py b/ums/management/db.py index 12117c3..a5ef8ed 100644 --- a/ums/management/db.py +++ b/ums/management/db.py @@ -62,16 +62,16 @@ class DB(): self.db = sqlite3.connect( os.path.join(PERSIST_PATH, 'messages.db'), check_same_thread=False - ) + ) self.db.row_factory = sqlite3.Row - - self.dblock = Lock() atexit.register(lambda db : db.close(), self.db) + self.db_lock = Lock() + self._assure_tables() def _assure_tables(self): - self.dblock.acquire() + self.db_lock.acquire() with self.db: self.db.execute("""CREATE TABLE IF NOT EXISTS Messages ( count INTEGER PRIMARY KEY AUTOINCREMENT, @@ -82,11 +82,11 @@ class DB(): json BLOB, processed BOOL DEFAULT FALSE )""") - self.dblock.release() + self.db_lock.release() @validate_call def add_message(self, sender:str, recipient:str, message:AgentMessage, processed:bool=False) -> int: - self.dblock.acquire() + self.db_lock.acquire() with self.db: self.db.execute( """INSERT INTO Messages ( @@ -101,20 +101,21 @@ class DB(): "processed" : processed }) new_count = self.db.execute("SELECT LAST_INSERT_ROWID() as last").fetchone() - self.dblock.release() + self.db_lock.release() return new_count['last'] @validate_call def set_processed(self, count:int, processed:bool=True) -> bool: - self.dblock.acquire() + self.db_lock.acquire() with self.db: try: self.db.execute("UPDATE Messages SET processed = ? WHERE count = ?", (processed, count)) return True except: return False - self.dblock.release() + finally: + self.db_lock.release() def __iter__(self) -> Generator[RowObject, None, None]: yield from self.iterate()