The root cause of the issue is that having multiple threads and using scoped_session and not correctly synchronizing those threads could lead to database locks and block these threads. In nailgun tests we could mock rpc and check arguments that are used when rpc is called.
When using fake thread for UI tests this mock approach can not be used. Looks like we need to correctly synchronize application threads.
It seems that the fails rate (due to shared database locks) depends on the test node performance. For instance, the same patch could pass tests on openstack-infra while it likely fails when running on slow VM. (there is no enough data to to say this is true, it is just an observation).
The root cause of the issue is that having multiple threads and using scoped_session and not correctly synchronizing those threads could lead to database locks and block these threads. In nailgun tests we could mock rpc and check arguments that are used when rpc is called.
When using fake thread for UI tests this mock approach can not be used. Looks like we need to correctly synchronize application threads.
It seems that the fails rate (due to shared database locks) depends on the test node performance. For instance, the same patch could pass tests on openstack-infra while it likely fails when running on slow VM. (there is no enough data to to say this is true, it is just an observation).