Patch | Description | Author | Forwarded | Bugs | Origin | Last update |
---|---|---|---|---|---|---|
kill-broken-test.patch | Kill broken test =================================================================== |
Thomas Goirand <zigo@debian.org> | no | 2018-02-16 | ||
fix-exception-using-py2-format.patch | Fix exception using py2 format | Thomas Goirand <zigo@debian.org> | no | 2020-04-24 | ||
Fix_tests_to_pass_with_SQLAlchemy-1.4.0.patch | [PATCH] Fix tests to pass with SQLAlchemy>=1.4.0 I'm not *entirely* sure what's going on here, but it seems that when we do something like obj = OpaqueObject(...) Session = sessionmaker(...) session = Session() ... session.add(obj) session.commit() the primary key (and maybe some foreign relations?) aren't automatically populated on `obj` following the commit, and will attempt to lazy-load on next reference. Since expire_on_commit defaults to True, the session attached to `obj` (which is no longer the `session` in locals!) is closed out when we later do session = Session() get_obj = session.query(OpaqueObject).filter( ManagedObject.unique_identifier == obj.unique_identifier).one() leading to a DetachedInstanceError. There seem to be a few different ways we can fix this: * Set expire_on_commit=False so the old session is still useful for the lazy-loading. * Re-use the same session instead of creating a new one. * Explicitly refresh added objects post-commit. Generally prefer the first one; there's some prior art to follow in services/server/test_engine.py. Curiously, that same file runs into trouble despite already setting expire_on_commit=False -- so do the explicit refresh, on the assumption that there was a reason we went to the trouble of creating a fresh session. Closes #649 |
Tim Burke <tim.burke@gmail.com> | no | 2021-09-21 |