Michael Ho created IMPALA-5102:
----------------------------------

             Summary: Handle uncaught exceptions in Impalad
                 Key: IMPALA-5102
                 URL: https://issues.apache.org/jira/browse/IMPALA-5102
             Project: IMPALA
          Issue Type: Bug
          Components: Backend
    Affects Versions: Impala 2.9.0
            Reporter: Michael Ho
            Assignee: Joe McDonnell
            Priority: Critical


Impalad uses noexcept API of boost library whenever possible. However, there 
are certain API which don't implement the noexcept variant. One example of this 
is the thread creation interface:

{noformat}
void Thread::StartThread(const ThreadFunctor& functor) {
  DCHECK(thread_manager.get() != nullptr)
      << "Thread created before InitThreading called";
  DCHECK(tid_ == UNINITIALISED_THREAD_ID) << "StartThread called twice";

  Promise<int64_t> thread_started;
  thread_.reset(
      new thread(&Thread::SuperviseThread, name_, category_, functor, 
&thread_started));

  // TODO: This slows down thread creation although not enormously. To make 
this faster,
  // consider delaying thread_started.Get() until the first call to tid(), but 
bear in
  // mind that some coordination is required between SuperviseThread() and this 
to make
  // sure that the thread is still available to have its tid set.
  tid_ = thread_started.Get();

  VLOG(2) << "Started thread " << tid_ << " - " << category_ << ":" << name_;
}
{noformat}

We have been bitten by this uncaught exception in the past such as IMPALA-3104. 
This kind of exception is more prone to occur when there are a large number of 
fragment instances running in an Impala cluster.

There are other uncaught exceptions in the code. Please update this JIRA as we 
find more.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to