impala-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lars Volker (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (IMPALA-5432) SetMemLimitExceeded DCHECK no longer valid
Date Mon, 05 Jun 2017 20:43:04 GMT

     [ https://issues.apache.org/jira/browse/IMPALA-5432?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Lars Volker resolved IMPALA-5432.
---------------------------------
       Resolution: Fixed
    Fix Version/s: Impala 2.10.0


IMPALA-5432: Remove invalid DCHECK from SetMemLimitExceeded

- SetMemLimitExeeded conditionally sets query_status to
  MEM_LIMIT_EXCEEDED if the current query_status is Ok.
- The DCHECK in SetMemLimitExceed unconditionally checked if the
  query_status is set to MEM_LIMIT_EXCEEDED.
  - It is possible that the query_status was set by some previous
  error that isn't a MEM_LIMIT_EXCEEDED error.

Change-Id: I1c03048ad15739baf7e68ca8d50930f3c45e71c5
Reviewed-on: http://gerrit.cloudera.org:8080/7075
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Impala Public Jenkins

> SetMemLimitExceeded DCHECK no longer valid
> ------------------------------------------
>
>                 Key: IMPALA-5432
>                 URL: https://issues.apache.org/jira/browse/IMPALA-5432
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Backend
>    Affects Versions: Impala 2.9.0
>            Reporter: John Sherman
>            Assignee: John Sherman
>             Fix For: Impala 2.10.0
>
>
> DCHECK(query_status_.IsMemLimitExceeded()) fails due to conditional setting of MemLimitExceeded
status. The query_status is only set to MemLimitExceeded if the prior status was ok (query_status_.ok).
> {code}
> void RuntimeState::SetMemLimitExceeded(MemTracker* tracker,
>     int64_t failed_allocation_size, const ErrorMsg* msg) {
>   Status status = tracker->MemLimitExceeded(this, msg == nullptr ? "" : msg->msg(),
>       failed_allocation_size);
>   {
>     lock_guard<SpinLock> l(query_status_lock_);
>     if (query_status_.ok()) query_status_ = status;
>   }
>   LogError(status.msg());
>   // Add warning about missing stats except for compute stats child queries.
>   if (!query_ctx().__isset.parent_query_id &&
>       query_ctx().__isset.tables_missing_stats &&
>       !query_ctx().tables_missing_stats.empty()) {
>     LogError(ErrorMsg(TErrorCode::GENERAL,
>         GetTablesMissingStatsWarning(query_ctx().tables_missing_stats)));
>   }
>   DCHECK(query_status_.IsMemLimitExceeded());
> }
> {code}
> This was discovered while running: ./tests/run-tests.py query_test/test_queries.py -k
test_very_large_strings
> which caused some impalad instances to hit the DCHECK and generate minidumps in my environment
(and fail the test).
> Removing the DCHECK still doesn't allow the test to pass due to what I think is better
memory error reporting, but I'm still investigating the failures to better understand what
is going on.



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

Mime
View raw message