From: Michael Tremer Date: Wed, 5 Feb 2025 17:27:59 +0000 (+0000) Subject: builds: Break some dependency cycle somewhere X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d44c58f52d933530908b07647b32d9b340b7ecfe;p=pbs.git builds: Break some dependency cycle somewhere SQLAlchemy failed to load alljobs in Builds and I could not quite figure out why. It seems that when both properties that form the relationship should be fetched in a single join, nothing happens and SQLAlchemy does not even seem to complain about it. Oh well. Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/builds.py b/src/buildservice/builds.py index 9f044a01..80345670 100644 --- a/src/buildservice/builds.py +++ b/src/buildservice/builds.py @@ -484,7 +484,7 @@ class Build(database.Base, database.BackendMixin, database.SoftDeleteMixin): # Commit commit = sqlalchemy.orm.relationship( - "SourceCommit", foreign_keys=[commit_id], lazy="joined", + "SourceCommit", foreign_keys=[commit_id], lazy="selectin", ) def has_perm(self, user): @@ -530,7 +530,7 @@ class Build(database.Base, database.BackendMixin, database.SoftDeleteMixin): # Jobs - This fetches all jobs that have ever existed for this build - alljobs = sqlalchemy.orm.relationship("Job", back_populates="build", lazy="selectin") + alljobs = sqlalchemy.orm.relationship("Job", back_populates="build", lazy="joined") @property def jobs(self): @@ -594,7 +594,7 @@ class Build(database.Base, database.BackendMixin, database.SoftDeleteMixin): # Deleted By deleted_by = sqlalchemy.orm.relationship( - "User", foreign_keys=[deleted_by_id], lazy="joined", + "User", foreign_keys=[deleted_by_id], lazy="selectin", ) # Add Points @@ -1032,7 +1032,7 @@ class Build(database.Base, database.BackendMixin, database.SoftDeleteMixin): # Deprecated By deprecated_by = sqlalchemy.orm.relationship( - "User", foreign_keys=[deprecated_by_id], lazy="joined", + "User", foreign_keys=[deprecated_by_id], lazy="selectin", ) # Deprecating Build ID @@ -1415,7 +1415,7 @@ class BuildBug(database.Base): # Added By added_by = sqlalchemy.orm.relationship( - "User", foreign_keys=[added_by_id], lazy="joined", + "User", foreign_keys=[added_by_id], lazy="joined", innerjoin=True, ) # Removed At @@ -1429,7 +1429,7 @@ class BuildBug(database.Base): # Removed ID removed_by = sqlalchemy.orm.relationship( - "User", foreign_keys=[removed_by_id], lazy="joined", + "User", foreign_keys=[removed_by_id], lazy="selectin", ) # Remove! @@ -1496,7 +1496,7 @@ class BuildPoint(database.Base, database.BackendMixin): # Build - build = sqlalchemy.orm.relationship("Build", foreign_keys=[build_id], lazy="joined") + build = sqlalchemy.orm.relationship("Build", foreign_keys=[build_id], lazy="selectin") # Created At @@ -1513,7 +1513,7 @@ class BuildPoint(database.Base, database.BackendMixin): # User - user = sqlalchemy.orm.relationship("User", foreign_keys=[user_id], lazy="joined") + user = sqlalchemy.orm.relationship("User", foreign_keys=[user_id], lazy="selectin") class BuildWatcher(database.Base, database.BackendMixin, database.SoftDeleteMixin): @@ -1539,7 +1539,7 @@ class BuildWatcher(database.Base, database.BackendMixin, database.SoftDeleteMixi # User - user = sqlalchemy.orm.relationship("User", lazy="selectin") + user = sqlalchemy.orm.relationship("User", lazy="joined", innerjoin=True) # Added At