Quanlong Huang created IMPALA-14876:
---------------------------------------

             Summary: Use const char* for thread name in 
impala::Thread::SuperviseThread
                 Key: IMPALA-14876
                 URL: https://issues.apache.org/jira/browse/IMPALA-14876
             Project: IMPALA
          Issue Type: Improvement
          Components: Backend
            Reporter: Quanlong Huang
            Assignee: Quanlong Huang


impala::Thread::SuperviseThread() runs most of the backend threads. Its first 
parameter is the thread name:
{code:cpp}
static void SuperviseThread(const std::string& name, const std::string& 
category,
      const ThreadFunctor& functor, const ThreadDebugInfo* parent_thread_info,
      Promise<int64_t>* thread_started);{code}
In backtraces printed in pstack/gdb, the thread name is usually omitted as 
"name=...", e.g.
{noformat}
#39 impala::Thread::SuperviseThread(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&, boost::function<void ()>, impala::ThreadDebugInfo const*, 
impala::Promise<long, (impala::PromiseMode)0>*) (name=..., category=..., 
functor=..., parent_thread_info=0x7f6bffa027f0, thread_started=0x7f6bffa01ac0) 
at thread.cc:360{noformat}

It'd be helpful to print the thread name so we can directly find the thread of 
a given fragment instance. The first option is making the thread name be shown 
correctly:
{noformat}
Thread 1045 (Thread 0x7ff184860640 (LWP 1395025) "reacquire threa"):{noformat}
However, pstack typically pulls the thread name from 
/proc/<pid>/task/<tid>/comm. Since the kernel only stores 15 characters there, 
pstack can only show 15 characters. That's not enough for fragment instance ids.

The second option is changing the 'name' parameter type to const char* and make 
sure it's not optimized out. Then pstack will print its value in the backtrace.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to