You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues-all@impala.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2018/08/02 02:55:00 UTC

[jira] [Commented] (IMPALA-7376) Impala hits a DCHECK if a fragment instance fails to initialize the filter bank

    [ https://issues.apache.org/jira/browse/IMPALA-7376?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16566280#comment-16566280 ] 

ASF subversion and git services commented on IMPALA-7376:
---------------------------------------------------------

Commit a76ea5c2ea055b8ba1aee9df9e574fc31cdebbc0 in impala's branch refs/heads/master from [~sailesh]
[ https://git-wip-us.apache.org/repos/asf?p=impala.git;h=a76ea5c ]

IMPALA-7376: DCHECK hit if a fragment instance fails to initialize the filter bank

While Prepare()-ing a fragment instance, if we fail to initialize the
runtime filter bank, we will exit FIS::Prepare() without acquiring a
thread token (AcquireThreadToken()):

FIS::Finalize() is called always regardless of whether the fragment
instance succeeded or failed. And FIS::Finalize() tries to ReleaseThreadToken()
even though it might not have gotten acquired, causing a DCHECK to be hit.

This patch fixes it by making sure that no failable code is run before
acquiring the thread token, thereby ensuring that the thread token is
always acquired and thus avoiding the above crash.

A test is added to confirm this as well. This test crashes without the
code changes in this patch.

Change-Id: I1d6e7afc18fe2f0e1e29d2bd8a5f804a78f7043a
Reviewed-on: http://gerrit.cloudera.org:8080/11096
Reviewed-by: Sailesh Mukil <sa...@cloudera.com>
Tested-by: Impala Public Jenkins <im...@cloudera.com>


> Impala hits a DCHECK if a fragment instance fails to initialize the filter bank
> -------------------------------------------------------------------------------
>
>                 Key: IMPALA-7376
>                 URL: https://issues.apache.org/jira/browse/IMPALA-7376
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Backend
>            Reporter: Sailesh Mukil
>            Assignee: Sailesh Mukil
>            Priority: Critical
>              Labels: crash
>
> While Prepare()-ing a fragment instance, if we fail to initialize the runtime filter bank, we will exit FIS::Prepare() without acquiring a thread token (AcquireThreadToken()):
> https://github.com/apache/impala/blob/316b17ac55adb3d1deeb1289b4045688269b201d/be/src/runtime/fragment-instance-state.cc#L135-L139
> FIS::Finalize() is called *always* regardless of whether the fragment instance succeeded or failed. And FIS::Finalize() tries to ReleaseThreadToken() even though it might not have gotten acquired:
> https://github.com/apache/impala/blob/316b17ac55adb3d1deeb1289b4045688269b201d/be/src/runtime/fragment-instance-state.cc#L464
> , causing a DCHECK to be hit.
> This was found while I was adding global debug actions (IMPALA-7046) to the FIS.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-all-unsubscribe@impala.apache.org
For additional commands, e-mail: issues-all-help@impala.apache.org