annotate tox.ini @ 8925:ee1da602b590 stable

repo_groups: fix deletion of subgroups Deletion of a repository group that has a parent group (i.e. is not at the root of the repository group tree) failed as follows: Traceback (most recent call last): [...] File ".../lib/python3.9/site-packages/tg/configurator/components/dispatch.py", line 114, in _call_controller return controller(*remainder, **params) File "<decorator-gen-5>", line 2, in delete File "/home/tdescham/repo/contrib/kallithea/kallithea-release/kallithea/lib/auth.py", line 572, in __wrapper return func(*fargs, **fkwargs) File "/home/tdescham/repo/contrib/kallithea/kallithea-release/kallithea/controllers/admin/repo_groups.py", line 271, in delete if gr.parent_group: File ".../lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 294, in __get__ return self.impl.get(instance_state(instance), dict_) File ".../lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 730, in get value = self.callable_(state, passive) File ".../lib/python3.9/site-packages/sqlalchemy/orm/strategies.py", line 717, in _load_for_state raise orm_exc.DetachedInstanceError( sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <RepoGroup at 0x7f1f2664f4c0> is not bound to a Session; lazy load operation of attribute 'parent_group' cannot proceed (Background on this error at: http://sqlalche.me/e/13/bhk3) In the reference 'gr.parent_group', 'gr' is an SQLAlchemy object referring to the group being deleted, and 'gr.parent_group' is a lazy reference to its parent group. The 'lazy' means that the parent group object is not loaded automatically when 'gr' is assigned, but instead will be loaded on-the-fly when the parent group is actually accessed. See [1] and [2] for more information. The problem was that the lazy 'parent_group' attribute was accessed _after_ deleting the database object it was part of. Fix this by obtaining a handle to the parent group _before_ deleting the subgroup. Reported-by: André Klitzing (via mailing list) [1] https://docs.sqlalchemy.org/en/13/errors.html#error-bhk3 [2] https://docs.sqlalchemy.org/en/13/orm/loading_relationships.html
author Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
date Wed, 01 Sep 2021 22:08:45 +0200
parents ab30729c735c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5015
2481c0a1ed31 Add tox.ini
Marc Abramowitz <marc@marc-abramowitz.com>
parents:
diff changeset
1 [tox]
5389
768989c595aa tox.ini: declare 1.8 as minimum tox version
Mads Kiilerich <madski@unity3d.com>
parents: 5061
diff changeset
2 minversion = 1.8
7708
ab30729c735c setup: drop support for Python 2.6
Mads Kiilerich <mads@kiilerich.com>
parents: 6026
diff changeset
3 envlist = py27-pytest
5015
2481c0a1ed31 Add tox.ini
Marc Abramowitz <marc@marc-abramowitz.com>
parents:
diff changeset
4
2481c0a1ed31 Add tox.ini
Marc Abramowitz <marc@marc-abramowitz.com>
parents:
diff changeset
5 [testenv]
5017
9c5e6984bd0e tox.ini: Set PYTHONHASHSEED = 0
Marc Abramowitz <marc@marc-abramowitz.com>
parents: 5016
diff changeset
6 setenv =
9c5e6984bd0e tox.ini: Set PYTHONHASHSEED = 0
Marc Abramowitz <marc@marc-abramowitz.com>
parents: 5016
diff changeset
7 PYTHONHASHSEED = 0
5016
46662961d58d tox.ini: Add nose and pytest deps
Marc Abramowitz <marc@marc-abramowitz.com>
parents: 5015
diff changeset
8 deps =
6026
dd676fdeda0f setup: move test dependencies to dev_requirements.txt to make them optional
Mads Kiilerich <madski@unity3d.com>
parents: 5995
diff changeset
9 -r{toxinidir}/dev_requirements.txt
5995
b2195895bbd7 tests: install pam and ldap modules when testing with tox
Mads Kiilerich <madski@unity3d.com>
parents: 5699
diff changeset
10 python-ldap
b2195895bbd7 tests: install pam and ldap modules when testing with tox
Mads Kiilerich <madski@unity3d.com>
parents: 5699
diff changeset
11 python-pam
5016
46662961d58d tox.ini: Add nose and pytest deps
Marc Abramowitz <marc@marc-abramowitz.com>
parents: 5015
diff changeset
12 commands =
46662961d58d tox.ini: Add nose and pytest deps
Marc Abramowitz <marc@marc-abramowitz.com>
parents: 5015
diff changeset
13 pytest: py.test {posargs}