[ https://issues.apache.org/jira/browse/IMPALA-6262?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Ho resolved IMPALA-6262. -------------------------------- Resolution: Fixed Fix Version/s: Impala 2.11.0 https://github.com/apache/impala/commit/ed72910e96b261ff1d7da06c49aceef508b477f9 IMPALA-6262: Always initialize runtime profile for DataSink This change moves the creation of the runtime profile from DataSink::Prepare() to the ctor of DataSink derived classes. This makes sure that DataSink::Close() and other functions can access the profile even if the DataSink fails to initialize. Testing done: Added a test case which triggers failure in the initialization of output expressions in a HdfsTableSink. Impalad crashed consistently without the fix. Change-Id: I2a683000ef180027b929dbebe78bc2a530a4767e Reviewed-on: http://gerrit.cloudera.org:8080/8770 Reviewed-by: Michael Ho <k...@cloudera.com> Tested-by: Impala Public Jenkins > Crash Impalad [ DataSink::Create fail which cause profile nullptr ] > --------------------------------------------------------------------- > > Key: IMPALA-6262 > URL: https://issues.apache.org/jira/browse/IMPALA-6262 > Project: IMPALA > Issue Type: Bug > Components: Backend > Affects Versions: Impala 2.10.0, Impala 2.11.0 > Reporter: yyzzjj > Assignee: Michael Ho > Priority: Critical > Fix For: Impala 2.11.0 > > Attachments: 新建文本文档 (3).txt > > > query got error status : Invalid plan. TupleIsNullPredicate has invalid > tuple idx > then impalad crash coredump show the next stack: > {noformat} > I1130 21:09:16.887727 7744 status.cc:125] Invalid plan. TupleIsNullPredicate > has invalid tuple idx. > @ 0x165a243 impala::Status::Status() > @ 0x2a02833 impala::TupleIsNullPredicate::Init() > @ 0x29c087b impala::ScalarExpr::Init() > @ 0x29c087b impala::ScalarExpr::Init() > @ 0x2a03046 impala::ScalarFnCall::Init() > @ 0x29c087b impala::ScalarExpr::Init() > @ 0x29bef56 impala::ScalarExpr::Create() > @ 0x29bf0f8 impala::ScalarExpr::Create() > @ 0x29bf32a impala::ScalarExpr::Create() > @ 0x1b636bf impala::DataSink::Init() > @ 0x1b63491 impala::DataSink::Create() > @ 0x18a9556 impala::FragmentInstanceState::Prepare() > @ 0x18a80f7 impala::FragmentInstanceState::Exec() > @ 0x189193c impala::QueryState::ExecFInstance() > @ 0x18901fe > _ZZN6impala10QueryState15StartFInstancesEvENKUlvE_clEv > @ 0x189257b > _ZN5boost6detail8function26void_function_obj_invoker0IZN6impala10QueryState15StartFInstancesEvEUlvE_vE6invokeERNS1_15function_bufferE > @ 0x17deeb6 boost::function0<>::operator()() > @ 0x1ad03a1 impala::Thread::SuperviseThread() > @ 0x1ad8f56 boost::_bi::list4<>::operator()<>() > @ 0x1ad8e99 boost::_bi::bind_t<>::operator()() > @ 0x1ad8e5c boost::detail::thread_data<>::run() > @ 0x2d875ea thread_proxy > @ 0x3fbc6079d1 (unknown) > @ 0x3fbbee886Wrote minidump to > /export/servers/impala/logs/minidumps/impalad/2ec94d40-a178-4d15-c880a592-8a2b52a1.dmp > (gdb) bt > #0 0x000000359e032925 in raise () from /lib64/libc.so.6 > #1 0x000000359e034105 in abort () from /lib64/libc.so.6 > #2 0x00007fce2a0a0a55 in os::abort(bool) () from > /usr/java/jdk1.7.0_67-cloudera///jre/lib/amd64/server/libjvm.so > #3 0x00007fce2a220f87 in VMError::report_and_die() () from > /usr/java/jdk1.7.0_67-cloudera///jre/lib/amd64/server/libjvm.so > #4 0x00007fce2a0a596f in JVM_handle_linux_signal () from > /usr/java/jdk1.7.0_67-cloudera///jre/lib/amd64/server/libjvm.so > #5 <signal handler called> > #6 0x0000000001810f36 in std::_Rb_tree<std::string, std::pair<std::string > const, impala::RuntimeProfile::Counter*>, > std::_Select1st<std::pair<std::string const, > impala::RuntimeProfile::Counter*> >, std::less<std::string>, > std::allocator<std::pair<std::string const, impala::RuntimeProfile::Counter*> > > >::_M_begin (this=0x20) at > /usr/local/gcc-4.9.3/include/c++/4.9.3/bits/stl_tree.h:518 > #7 0x000000000180f88e in std::_Rb_tree<std::string, std::pair<std::string > const, impala::RuntimeProfile::Counter*>, > std::_Select1st<std::pair<std::string const, > impala::RuntimeProfile::Counter*> >, std::less<std::string>, > std::allocator<std::pair<std::string const, impala::RuntimeProfile::Counter*> > > >::lower_bound (this=0x20, __k=...) at > /usr/local/gcc-4.9.3/include/c++/4.9.3/bits/stl_tree.h:927 > #8 0x000000000180e5a3 in std::map<std::string, > impala::RuntimeProfile::Counter*, std::less<std::string>, > std::allocator<std::pair<std::string const, impala::RuntimeProfile::Counter*> > > >::lower_bound ( > this=0x20, __x=...) at > /usr/local/gcc-4.9.3/include/c++/4.9.3/bits/stl_map.h:902 > #9 0x000000000180d290 in std::map<std::string, > impala::RuntimeProfile::Counter*, std::less<std::string>, > std::allocator<std::pair<std::string const, impala::RuntimeProfile::Counter*> > > >::operator[] ( > this=0x20, __k=...) at > /usr/local/gcc-4.9.3/include/c++/4.9.3/bits/stl_map.h:496 > #10 0x000000000183a396 in impala::RuntimeProfile::total_time_counter > (this=0x0) at > /export/ldb/online/kudu_rpc_branch/be/src/util/runtime-profile.h:257 > #11 0x000000000290e31a in impala::KuduTableSink::Close (this=0x107aa300, > state=0xe3fba80) at > /export/ldb/online/kudu_rpc_branch/be/src/exec/kudu-table-sink.cc:354 > #12 0x00000000018ab06e in impala::FragmentInstanceState::Close > (this=0xe879680) at > /export/ldb/online/kudu_rpc_branch/be/src/runtime/fragment-instance-state.cc:290 > #13 0x00000000018a8418 in impala::FragmentInstanceState::Exec > (this=0xe879680) at > /export/ldb/online/kudu_rpc_branch/be/src/runtime/fragment-instance-state.cc:95 > #14 0x000000000189193c in impala::QueryState::ExecFInstance (this=0xd4d6d00, > fis=0xe879680) at > /export/ldb/online/kudu_rpc_branch/be/src/runtime/query-state.cc:385 > #15 0x00000000018901fe in impala::QueryState::<lambda()>::operator()(void) > const (__closure=0x7fcd5be4cbc8) at > /export/ldb/online/kudu_rpc_branch/be/src/runtime/query-state.cc:328 > #16 0x000000000189257b in > boost::detail::function::void_function_obj_invoker0<impala::QueryState::StartFInstances()::<lambda()>, > void>::invoke(boost::detail::function::function_buffer &) ( > function_obj_ptr=...) at > /export/ldb/online/kudu_rpc_branch/toolchain/boost-1.57.0-p3/include/boost/function/function_template.hpp:153 > #17 0x00000000017deeb6 in boost::function0<void>::operator() > (this=0x7fcd5be4cbc0) at > /export/ldb/online/kudu_rpc_branch/toolchain/boost-1.57.0-p3/include/boost/function/function_template.hpp:767 > #18 0x0000000001ad03a1 in impala::Thread::SuperviseThread(std::string const&, > std::string const&, boost::function<void ()>, impala::Promise<long>*) > (name=..., category=..., functor=..., > thread_started=0x7fcd62c56ab0) at > /export/ldb/online/kudu_rpc_branch/be/src/util/thread.cc:352 > #19 0x0000000001ad8f56 in boost::_bi::list4<boost::_bi::value<std::string>, > boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, > boost::_bi::value<impala::Promise<long>*> >::operator()<void (*)(std::string > const&, std::string const&, boost::function<void ()>, > impala::Promise<long>*), boost::_bi::list0>(boost::_bi::type<void>, void > (*&)(std::string const&, std::string const&, boost::function<void ()>, > impala::Promise<long>*), boost::_bi::list0&, int) (this=0xcf703c0, > f=@0xcf703b8: 0x1ad0082 <impala::Thread::SuperviseThread(std::string > const&, std::string const&, boost::function<void ()>, > impala::Promise<long>*)>, a=...) > at > /export/ldb/online/kudu_rpc_branch/toolchain/boost-1.57.0-p3/include/boost/bind/bind.hpp:457 > #20 0x0000000001ad8e99 in boost::_bi::bind_t<void, void (*)(std::string > const&, std::string const&, boost::function<void ()>, > impala::Promise<long>*), boost::_bi::list4<boost::_bi::value<std::string>, > boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, > boost::_bi::value<impala::Promise<long>*> > >::operator()() (this=0xcf703b8) > at > /export/ldb/online/kudu_rpc_branch/toolchain/boost-1.57.0-p3/include/boost/bind/bind_template.hpp:20 > #21 0x0000000001ad8e5c in boost::detail::thread_data<boost::_bi::bind_t<void, > void (*)(std::string const&, std::string const&, boost::function<void ()>, > impala::Promise<long>*), boost::_bi::list4<boost::_bi::value<std::string>, > boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, > boost::_bi::value<impala::Promise<long>*> > > >::run() (this=0xcf70200) > at > /export/ldb/online/kudu_rpc_branch/toolchain/boost-1.57.0-p3/include/boost/thread/detail/thread.hpp:116 > #22 0x0000000002d875ea in thread_proxy () > #23 0x000000359e4079d1 in start_thread () from /lib64/libpthread.so.0 > #24 0x000000359e0e8b6d in clone () from /lib64/libc.so.6 > {noformat} -- This message was sent by Atlassian JIRA (v6.4.14#64029)