Bug #49644
openvstart_runner: run_ceph_w() doesn't work with shell=True
0%
Description
Setting shell
to True
leads to a crash when tasks.mgr.test_module_selftest.TestModuleSelftest.test_selftest_cluster_log
is run on "ceph API" GitHub CI job. The crash happens when self.subproc.communicate()
is run in self.watcher_process.finished()
(self.watcher_process
is an instance of LocalRemoteProcess
) in ContextManager.__exit__()
.
See ceph API job on this PR (https://github.com/ceph/ceph/pull/38471) to see the crash. The console output also contains extra debug messages that shows that crashed happened on call to self.proc.communicate()
in LocalRemoteProcess.finished()
.
Ideally, the run_ceph_w()
should work even when shell
is set to True
.
Also see this PR - https://github.com/ceph/ceph/pull/38443. Especially this discussion on it might be helpful - https://github.com/ceph/ceph/pull/38443#discussion_r537673068.
Why do we need to set shell
to True
?
----------------------------------------
Currently, teuthology.orchestra.run.run()
executes commands with shell
set to True
while vstart_runner.LocalRemoteProcess.run
runs with shell@s set to @False
. This inconsistency leads to incompatibility and bugs and makes code in teuthology.remote
non-reusable.