2015-03-05 12:43:34 |
Samuel de Medeiros Queiroz |
description |
When iterating over the list of filters to honor them [1], the method remove elements from that list at the same time [2].
This way, not all filters are honored since the internal idx used by python is not aware of the removal while iterating. The following example code exposes this behavior:
a=[1,2]
for b in a:
print b
a.remove(b)
It prints 1 and the list ends with element 2.
[1] https://github.com/openstack/keystone/blob/master/keystone/common/sql/core.py#L319-L325
[2] https://github.com/openstack/keystone/blob/master/keystone/common/sql/core.py#L314 |
When iterating over the list of filters to honor them [1] [2], the method remove elements from that list at the same time [3] [4].
This way, not all filters are honored since the internal idx used by python is not aware of the removal while iterating. The following example code exposes this behavior:
a=[1,2]
for b in a:
print b
a.remove(b)
It prints 1 and the list ends with element 2.
[1] https://github.com/openstack/keystone/blob/master/keystone/common/sql/core.py#L319-L325
[2] https://github.com/openstack/keystone/blob/master/keystone/common/ldap/core.py#L1750-L1755
[3] https://github.com/openstack/keystone/blob/master/keystone/common/sql/core.py#L314
[4] https://github.com/openstack/keystone/blob/master/keystone/common/ldap/core.py#L1742 |
|