Debian Patches

Status for python-pykmip/0.10.0-4

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

All known versions for source package 'python-pykmip'

Links