Activity log for bug #1455357

Date Who What changed Old value New value Message
2015-05-15 07:10:20 Dennis Dmitriev bug added bug
2015-05-15 07:50:37 Nastya Urlapova fuel: importance Undecided High
2015-05-15 08:35:46 Nastya Urlapova fuel: status New Confirmed
2015-05-15 08:35:51 Nastya Urlapova tags system-tests non-release system-tests
2015-05-18 09:25:02 Sebastian Kalinowski fuel: assignee MOS QA Team (mos-qa) Sebastian Kalinowski (prmtl)
2015-05-18 09:25:05 Sebastian Kalinowski fuel: status Confirmed In Progress
2015-05-19 11:42:48 Sebastian Kalinowski fuel: status In Progress Confirmed
2015-05-19 11:42:58 Sebastian Kalinowski fuel: assignee Sebastian Kalinowski (prmtl) Fuel QA Team (fuel-qa)
2015-05-28 07:28:36 Sylwester Brzeczkowski fuel: assignee Fuel QA Team (fuel-qa) Sylwester Brzeczkowski (sbrzeczkowski)
2015-05-29 12:20:00 OpenStack Infra fuel: status Confirmed In Progress
2015-07-02 09:26:18 Dennis Dmitriev nominated for series fuel/6.1.x
2015-07-02 09:26:18 Dennis Dmitriev bug task added fuel/6.1.x
2015-07-02 09:26:18 Dennis Dmitriev nominated for series fuel/7.0.x
2015-07-02 09:26:18 Dennis Dmitriev bug task added fuel/7.0.x
2015-07-02 09:26:35 Dennis Dmitriev fuel/6.1.x: milestone 6.1-updates
2015-07-02 09:26:54 Dennis Dmitriev fuel/7.0.x: milestone 6.1 7.0
2015-07-02 09:27:00 Dennis Dmitriev fuel/6.1.x: importance Undecided High
2015-07-02 09:27:09 Dennis Dmitriev fuel/6.1.x: status New In Progress
2015-07-02 09:27:29 Dennis Dmitriev fuel/6.1.x: assignee Sylwester Brzeczkowski (sbrzeczkowski)
2015-07-31 06:36:55 Sylwester Brzeczkowski fuel/7.0.x: assignee Sylwester Brzeczkowski (sbrzeczkowski) Fuel DevOps (fuel-devops)
2015-07-31 09:37:12 Sylwester Brzeczkowski fuel/7.0.x: assignee Fuel DevOps (fuel-devops) Sylwester Brzeczkowski (sbrzeczkowski)
2015-08-05 10:43:14 Sylwester Brzeczkowski fuel/7.0.x: importance High Medium
2015-08-05 10:43:20 Sylwester Brzeczkowski fuel/6.1.x: importance High Medium
2015-08-06 22:14:34 Dmitry Pyzhov fuel/7.0.x: milestone 7.0 8.0
2015-08-06 22:14:46 Dmitry Pyzhov bug task deleted fuel/7.0.x
2015-09-18 12:26:39 Dmitry Pyzhov bug task deleted fuel/6.1.x
2015-09-18 12:38:09 Sylwester Brzeczkowski description In the bug https://bugs.launchpad.net/fuel/+bug/1416365 we tried to fix the issue by updating fuel-devops, where method SSHClient.clear() was added to automate closing paramiko transports when SSHClient is deleted/exited [1]. But it doesn't work because of two things: - we don't use SSHClient as a context manager; - SSHClient instances are deleted only when Proboscis is finished, because we initialize it not using Node model from devops, but directly by IP address. So SSHClient is not deleted when Environment model of fuel-devops is destroyed after each test case, but exists to the end of whole job because Proboscis never delete classes after test case is finished; - stop_thread() method in Paramiko transport is not designed for such load when several hundreds threads are closing at the same time [2]. As the result: - SSHClient.clear() is called not at the end of each test case, but at the end of whole test group , when it exits. - This method is correctly called by python interpreter, but because of 10-seconds timeout of waiting for thread (see [2]) , some threads are finished on time, some are not. - Those thread which are not finished on time - cause the exceptions. What we can do: 1) Always call remote.clear() from methods in fuel-devops/fuel-qa ; 2) Use SSHClient as a context manager everywhere in fuel-devops/fuel-qa ; 3) Store all opened transports in the 'Environment' model of fuel-devops, re-use it to reduce the amount of opened transports, delete them when 'Environment' model is destroyed after each test case. This will be not very good, but easiest solution to avoid refactoring whole fuel-qa source code. 10 seconds must be enough to close <10 transports. [1] https://github.com/stackforge/fuel-devops/blob/master/devops/helpers/helpers.py#L243 [2] https://github.com/paramiko/paramiko/blob/master/paramiko/transport.py#L1420-L1421 NEW BUG DESCRIPTION: After investigating a bug more deeply: It does not make sense to store SSHClient object as they all are Threads, which once stopped, cannot be started again. All SSHClient objects should be changed to be used as Python Context Managers - what will automatically close all connections even when an Exception occur. Also we should remember that SSH connection is quite heavy process for the system if we talking about hundreds of connections running at the same moment, so all the future tests should be written with care about the issue. OLD BUG DESCRIPTION: In the bug https://bugs.launchpad.net/fuel/+bug/1416365 we tried to fix the issue by updating fuel-devops, where method SSHClient.clear() was added to automate closing paramiko transports when SSHClient is deleted/exited [1]. But it doesn't work because of two things: - we don't use SSHClient as a context manager; - SSHClient instances are deleted only when Proboscis is finished, because we initialize it not using Node model from devops, but directly by IP address. So SSHClient is not deleted when Environment model of fuel-devops is destroyed after each test case, but exists to the end of whole job because Proboscis never delete classes after test case is finished; - stop_thread() method in Paramiko transport is not designed for such load when several hundreds threads are closing at the same time [2]. As the result: - SSHClient.clear() is called not at the end of each test case, but at the end of whole test group , when it exits. - This method is correctly called by python interpreter, but because of 10-seconds timeout of waiting for thread (see [2]) , some threads are finished on time, some are not. - Those thread which are not finished on time - cause the exceptions. What we can do: 1) Always call remote.clear() from methods in fuel-devops/fuel-qa ; 2) Use SSHClient as a context manager everywhere in fuel-devops/fuel-qa ; 3) Store all opened transports in the 'Environment' model of fuel-devops, re-use it to reduce the amount of opened transports, delete them when 'Environment' model is destroyed after each test case. This will be not very good, but easiest solution to avoid refactoring whole fuel-qa source code. 10 seconds must be enough to close <10 transports. [1] https://github.com/stackforge/fuel-devops/blob/master/devops/helpers/helpers.py#L243 [2] https://github.com/paramiko/paramiko/blob/master/paramiko/transport.py#L1420-L1421
2015-09-18 12:38:17 Sylwester Brzeczkowski fuel: assignee Sylwester Brzeczkowski (sbrzeczkowski) Fuel QA Team (fuel-qa)
2015-09-18 12:38:23 Sylwester Brzeczkowski fuel: status In Progress Triaged
2015-10-22 03:37:43 Dmitry Pyzhov tags non-release system-tests area-qa non-release system-tests
2015-11-04 09:02:12 Tatyanka fuel: status Triaged Incomplete
2015-11-10 17:17:56 Tatyanka fuel: status Incomplete Fix Released
2016-03-11 13:00:17 Nastya Urlapova tags area-qa non-release system-tests area-qa system-tests