Details
-
Sub-task
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
Impala 2.11.0
-
None
-
ghx-label-4
Description
LLVM has an interface to install a diagnostic handler to handle errors. The default behaviour will exit the process immediately, which is not desirable if the problem is something like a malformed IR UDF. See IMPALA-5999 for an example.
http://llvm.org/doxygen/DiagnosticHandler_8h_source.html
I can cause the Impala daemon to exit by inducing a linking error with an IR UDF:
$hdfs dfs -cp /test-warehouse/test-udfs.ll /test-warehouse/test-udfs2.ll [localhost:21000] > create function identity(boolean) returns boolean location '/test-warehouse/test-udfs.ll' symbol='Identity'; Query: create function identity(boolean) returns boolean location '/test-warehouse/test-udfs.ll' symbol='Identity' Fetched 0 row(s) in 0.21s [localhost:21000] > create function identity(int) returns int location '/test-warehouse/test-udfs2.ll' symbol='Identity'; Query: create function identity(int) returns int location '/test-warehouse/test-udfs2.ll' symbol='Identity' Fetched 0 row(s) in 0.04s [localhost:21000] > select identity(bool_col), identity(int_col) from functional.alltypestiny; Query: select identity(bool_col), identity(int_col) from functional.alltypestiny Query submitted at: 2017-09-29 15:36:27 (Coordinator: http://tarmstrong-box:25000) Error communicating with impalad: TSocket read 0 bytes
In the error log:
error: Linking globals named 'global_array_2': symbol multiply defined!