mirror of
https://github.com/bunkerity/bunkerweb
synced 2026-05-24 09:28:37 +00:00
Add ui_version field update and avoid potential race conditions
This commit is contained in:
parent
516b654923
commit
658bc310eb
2 changed files with 18 additions and 2 deletions
|
|
@ -506,16 +506,21 @@ class Database:
|
|||
|
||||
inspector = inspect(self.sql_engine)
|
||||
db_version = None
|
||||
db_ui_version = bunkerweb_version
|
||||
has_all_tables = True
|
||||
old_data = {}
|
||||
|
||||
if inspector and len(inspector.get_table_names()):
|
||||
metadata = self.get_metadata()
|
||||
db_version = metadata["version"]
|
||||
db_ui_version = metadata["ui_version"]
|
||||
if metadata["default"]:
|
||||
db_version = "error"
|
||||
|
||||
if db_version != bunkerweb_version:
|
||||
if db_ui_version != bunkerweb_version:
|
||||
db_ui_version = db_version
|
||||
|
||||
self.logger.warning(f"Database version ({db_version}) is different from Bunkerweb version ({bunkerweb_version}), migrating ...")
|
||||
current_time = datetime.now()
|
||||
error = True
|
||||
|
|
@ -1045,10 +1050,10 @@ class Database:
|
|||
if table_name == "bw_metadata":
|
||||
existing_row = session.query(Metadata).filter_by(id=1).first()
|
||||
if not existing_row:
|
||||
session.add(Metadata(**(row | {"ui_version": db_version})))
|
||||
session.add(Metadata(**(row | {"ui_version": db_ui_version})))
|
||||
session.commit()
|
||||
continue
|
||||
session.query(Metadata).filter_by(id=1).update(row | {"ui_version": db_version})
|
||||
session.query(Metadata).filter_by(id=1).update(row | {"ui_version": db_ui_version})
|
||||
continue
|
||||
|
||||
# Check if the row already exists in the table
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ from sqlalchemy import MetaData, inspect, text
|
|||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from Database import Database # type: ignore
|
||||
from model import Metadata # type: ignore
|
||||
|
||||
from models import Base, Users, Roles, RolesUsers, UserRecoveryCodes, RolesPermissions, Permissions
|
||||
|
||||
|
||||
|
|
@ -132,6 +134,15 @@ class UIDatabase(Database):
|
|||
continue
|
||||
self.logger.debug(e)
|
||||
|
||||
with self._db_session() as session:
|
||||
try:
|
||||
metadata = session.query(Metadata).get(1)
|
||||
if metadata:
|
||||
metadata.ui_version = bunkerweb_version
|
||||
session.commit()
|
||||
except BaseException as e:
|
||||
self.logger.error(f"Error when trying to update ui_version field in metadata: {e}")
|
||||
|
||||
return True, ""
|
||||
|
||||
def get_ui_user(self, *, username: Optional[str] = None, as_dict: bool = False) -> Optional[Union[Users, dict]]:
|
||||
|
|
|
|||
Loading…
Reference in a new issue