You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by jo...@apache.org on 2020/10/20 04:16:21 UTC

[impala] 01/02: IMPALA-9918: ORC scanner hits DCHECK when GLOG_v=3

This is an automated email from the ASF dual-hosted git repository.

joemcdonnell pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/impala.git

commit 1e2176c84909a26e6405df7ae6d34d724e5a5217
Author: Csaba Ringhofer <cs...@cloudera.com>
AuthorDate: Mon Oct 19 21:07:03 2020 +0200

    IMPALA-9918: ORC scanner hits DCHECK when GLOG_v=3
    
    PrintPath assumed that all elements in the path are complex,
    and hit a DCHECK if it contained a scalar element. This didn't
    seem to cause problems in Parquet, but the ORC scanner called
    this function with paths where the last element was scalar.
    This problem was probably not discovered because no one tested
    ORC scanning with v=3 logging + DEBUG builds.
    
    Also added logging to the events when log levels are changed
    through the webpage. In case of ResetJavaLogLevelCallback
    there was already log line from GlogAppender.java.
    
    Note that the cause of the original issue is still unknown,
    as it occurred during custom cluster tests where no other tests
    should change the log levels in parallel.
    
    Testing:
    - tested the log changes manually
    
    Change-Id: I94e12d2a62ccab5eb5d21675d5f0138f04e622ac
    Reviewed-on: http://gerrit.cloudera.org:8080/16611
    Reviewed-by: Tim Armstrong <ta...@cloudera.com>
    Tested-by: Impala Public Jenkins <im...@cloudera.com>
---
 be/src/util/debug-util.cc      | 5 +++--
 be/src/util/logging-support.cc | 3 +++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/be/src/util/debug-util.cc b/be/src/util/debug-util.cc
index d2d7eb2..e176852 100644
--- a/be/src/util/debug-util.cc
+++ b/be/src/util/debug-util.cc
@@ -257,8 +257,9 @@ string PrintPath(const TableDescriptor& tbl_desc, const SchemaPath& path) {
         type = &type->children[path[i]];
         break;
       default:
-        DCHECK(false) << PrintNumericPath(path) << " " << i << " " << type->DebugString();
-        return PrintNumericPath(path);
+        DCHECK_EQ(path.size() - 1, i) << PrintNumericPath(path) << " "
+                                      << i <<" " << type->DebugString();
+        ss << "(" << type->DebugString() << ")";
     }
   }
   return ss.str();
diff --git a/be/src/util/logging-support.cc b/be/src/util/logging-support.cc
index d05d8dc..2b6f9dd 100644
--- a/be/src/util/logging-support.cc
+++ b/be/src/util/logging-support.cc
@@ -173,6 +173,7 @@ void SetJavaLogLevelCallback(const Webserver::WebRequest& req, Document* documen
         "is empty.", "error", document);
     return;
   }
+  VLOG(1) << "New Java log level set: " << result;
   AddDocumentMember(result, "set_java_loglevel_result", document);
 }
 
@@ -214,6 +215,7 @@ void SetGlogLevelCallback(const Webserver::WebRequest& req, Document* document)
         "range [0-3].", "error", document);
     return;
   }
+  VLOG(1) << "New glog level set: " << new_log_level;
   AddDocumentMember(new_log_level, "set_glog_level_result", document);
 }
 
@@ -221,6 +223,7 @@ void SetGlogLevelCallback(const Webserver::WebRequest& req, Document* document)
 void ResetGlogLevelCallback(const Webserver::WebRequest& req, Document* document) {
   string new_log_level = google::SetCommandLineOption("v",
       to_string(FLAGS_v_original_value).data());
+  VLOG(1) << "New glog level set: " << new_log_level;
   AddDocumentMember(new_log_level, "reset_glog_level_result", document);
 }