mirror of
https://github.com/clearml/clearml-server
synced 2025-06-26 23:15:47 +00:00
MongoDB upgrade to v5.0
This commit is contained in:
@@ -8,13 +8,16 @@ import pymongo.database
|
|||||||
from mongoengine.connection import get_db
|
from mongoengine.connection import get_db
|
||||||
from packaging.version import Version, parse
|
from packaging.version import Version, parse
|
||||||
|
|
||||||
|
from apiserver.config_repo import config
|
||||||
from apiserver.database import utils
|
from apiserver.database import utils
|
||||||
from apiserver.database import Database
|
from apiserver.database import Database
|
||||||
from apiserver.database.model.version import Version as DatabaseVersion
|
from apiserver.database.model.version import Version as DatabaseVersion
|
||||||
|
from apiserver.utilities.dicts import nested_get
|
||||||
|
|
||||||
_migrations = "migrations"
|
_migrations = "migrations"
|
||||||
_parent_dir = Path(__file__).resolve().parents[1]
|
_parent_dir = Path(__file__).resolve().parents[1]
|
||||||
_migration_dir = _parent_dir / _migrations
|
_migration_dir = _parent_dir / _migrations
|
||||||
|
log = config.logger(__file__)
|
||||||
|
|
||||||
|
|
||||||
def check_mongo_empty() -> bool:
|
def check_mongo_empty() -> bool:
|
||||||
@@ -41,6 +44,26 @@ def get_last_server_version() -> Version:
|
|||||||
return previous_versions[0] if previous_versions else Version("0.0.0")
|
return previous_versions[0] if previous_versions else Version("0.0.0")
|
||||||
|
|
||||||
|
|
||||||
|
def _ensure_mongodb_version():
|
||||||
|
db: pymongo.database.Database = get_db(Database.backend)
|
||||||
|
db_version = db.client.server_info()["version"]
|
||||||
|
if not db_version.startswith("5.0"):
|
||||||
|
log.warning(f"Database version should be 5.0.x. Instead: {str(db_version)}")
|
||||||
|
return
|
||||||
|
|
||||||
|
res = db.client.admin.command({"getParameter": 1, "featureCompatibilityVersion": 1})
|
||||||
|
version = nested_get(res, ("featureCompatibilityVersion", "version"))
|
||||||
|
if version == "5.0":
|
||||||
|
return
|
||||||
|
if version != "4.4":
|
||||||
|
log.warning(f"Cannot upgrade DB version. Should be 4.4. {str(res)}")
|
||||||
|
return
|
||||||
|
|
||||||
|
log.info("Upgrading db version from 4.4 to 5.0")
|
||||||
|
res = db.client.admin.command({"setFeatureCompatibilityVersion": "5.0"})
|
||||||
|
log.info(res)
|
||||||
|
|
||||||
|
|
||||||
def _apply_migrations(log: Logger):
|
def _apply_migrations(log: Logger):
|
||||||
"""
|
"""
|
||||||
Apply migrations as found in the migration dir.
|
Apply migrations as found in the migration dir.
|
||||||
@@ -50,6 +73,8 @@ def _apply_migrations(log: Logger):
|
|||||||
|
|
||||||
log.info(f"Started mongodb migrations")
|
log.info(f"Started mongodb migrations")
|
||||||
|
|
||||||
|
_ensure_mongodb_version()
|
||||||
|
|
||||||
if not _migration_dir.is_dir():
|
if not _migration_dir.is_dir():
|
||||||
raise ValueError(f"Invalid migration dir {_migration_dir}")
|
raise ValueError(f"Invalid migration dir {_migration_dir}")
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ packaging==20.3
|
|||||||
psutil>=5.6.5
|
psutil>=5.6.5
|
||||||
pyhocon>=0.3.35r
|
pyhocon>=0.3.35r
|
||||||
pyjwt>=2.4.0
|
pyjwt>=2.4.0
|
||||||
pymongo==4.6.3
|
pymongo==4.7.3
|
||||||
python-rapidjson>=0.6.3
|
python-rapidjson>=0.6.3
|
||||||
redis>=4.5.4,<5
|
redis>=4.5.4,<5
|
||||||
requests>=2.13.0
|
requests>=2.13.0
|
||||||
|
|||||||
Reference in New Issue
Block a user