Joe McDonnell created IMPALA-11251: -------------------------------------- Summary: TestImpalaShellInteractive.test_unicode_input fails on Ubuntu 20 Key: IMPALA-11251 URL: https://issues.apache.org/jira/browse/IMPALA-11251 Project: IMPALA Issue Type: Bug Components: Infrastructure Affects Versions: Impala 4.1.0 Reporter: Joe McDonnell
Running TestImpalaShellInteractive.test_unicode_input() on Ubuntu results in this failure: {noformat} shell/test_shell_interactive.py:377: in test_unicode_input child_proc.expect(PROMPT_REGEX) ../infra/python/env-gcc7.5.0/lib/python2.7/site-packages/pexpect/__init__.py:1451: in expect timeout, searchwindowsize) ../infra/python/env-gcc7.5.0/lib/python2.7/site-packages/pexpect/__init__.py:1466: in expect_list timeout, searchwindowsize) ../infra/python/env-gcc7.5.0/lib/python2.7/site-packages/pexpect/__init__.py:1554: in expect_loop raise EOF(str(err) + '\n' + str(self)) E EOF: End Of File (EOF). Exception style platform. E <pexpect.spawn object at 0x7fe089a9e890> E version: 3.3 E command: /home/impdev/Impala/shell/build/impala-shell-4.1.0-SNAPSHOT/impala-shell E args: ['/home/impdev/Impala/shell/build/impala-shell-4.1.0-SNAPSHOT/impala-shell', '--protocol=beeswax', '-ilocalhost:21000'] E searcher: <pexpect.searcher_re object at 0x7fe089a9ec10> E buffer (last 100 chars): '' E before (last 100 chars): ' (required by /home/impdev/.python-eggs/sasl-0.2.1-py2.7-linux-x86_64.egg-tmp/sasl/saslwrapper.so)\r\n' E after: <class 'pexpect.EOF'> E match: None E match_index: None E exitstatus: None E flag_eof: True E pid: 1109550 E child_fd: 23 E closed: False E timeout: 30 E delimiter: <class 'pexpect.EOF'> E logfile: None E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1{noformat} What seems to be happening is that impala-shell is built against the system compiler / system libstdc++ (GCC 9). If we then run it with LD_LIBRARY_PATH set to point to toolchain compiler / libstdc++, then it won't find the symbols it needs to run. The solution is to use shell/util.py's spawn_shell function, which cleans up the environment for the pexpect: {noformat} def build_shell_env(env=None): """ Construct the environment for the shell to run in based on 'env', or the current process's environment if env is None.""" if not env: env = os.environ # Don't inherit PYTHONPATH or LD_LIBRARY_PATH - the shell launch script must set # these to include dependencies. Copy 'env' to avoid mutating argument or os.environ. env = dict(env) if "PYTHONPATH" in env: del env["PYTHONPATH"] if "LD_LIBRARY_PATH" in env: del env["LD_LIBRARY_PATH"] return env ... def spawn_shell(shell_cmd): """Spawn a shell process with the provided command line. Returns the Pexpect object.""" return pexpect.spawn(shell_cmd[0], shell_cmd[1:], env=build_shell_env()){noformat} -- This message was sent by Atlassian Jira (v8.20.1#820001) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-all-unsubscr...@impala.apache.org For additional commands, e-mail: issues-all-h...@impala.apache.org