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

Dmitriy Fingerman updated HIVE-28579:
-------------------------------------
    Description: 
+*Background:*+

Hive operational log is a query log that contains messages for a specific query 
id and is intended for Hive clients.
When operational log is enabled, it shows query id, exception stack traces and 
other messages in Hue and Beeline (see screenshot attached). Hive clients fetch 
the operational log using Hive-specific jdbc method *HiveStatement.getQueryLog.*

The following settings control operational log behavior:
 * {*}Hive.server2.logging.operation.enabled{*}: true/false (true by default)
 * {*}hive.server2.logging.operation.level{*}:

 * 
 **  NONE:     Ignore any logging
 **  EXECUTION:   Log completion of tasks
 **  PERFORMANCE: Execution + Performance logs
 **  VERBOSE:     All logs
 * Log level can be changed on session level.
 * The default log level is {{{}EXECUTION{}}}, which displays exception stack 
traces which is not good as a default for non-technical users.

+*Problem Description:*+

Currently, when '{*}hive.server2.async.exec.async.compile{*}' {*}= 
'{*}{*}true{*}' and an exception happens, an operational log is not displayed 
in Beeline and Hue (because stmtHandle is empty) and only exception message is 
displayed. Query id is not displayed.

When *'hive.server2.async.exec.async.compile' = 'false'* and operational log 
level != 'NONE'{*},{*} operational log is displayed with query id and exception 
stack trace and also exception message is displayed.

End-users do not need to see exception stack traces by default, but when a 
query fails they should know Query ID, because using one they can find stack 
traces and other info in HiveServer2 log.

+*Proposed Solution:*+

Proposing to:
 # Change '{*}hive.server2.logging.operation.level'{*} to 'NONE' by default to 
hide exception stack traces from end-users
 # Add query id to HiveSQLException's message when the operational log level = 
'NONE' or when {*}'hive.server2.async.exec.async.compile' = 'true'{*}, because 
in these 2 cases the operational log is not displayed and therefore a query id 
is also not displayed. This will ensure that by default exception stack trace 
won't be shown and that query id will always be shown for the user.

         

  was:
+*Background:*+

Hive operational log is a query log that contains messages for a specific query 
id and is intended for Hive clients.
When operational log is enabled, it shows query id, exception stack traces and 
other messages in Hue and Beeline (see screenshot attached). Hive clients fetch 
the operational log using Hive-specific jdbc method *HiveStatement.getQueryLog.*

The following settings control operational log behavior:
 * {*}Hive.server2.logging.operation.enabled{*}: true/false (true by default)
 * {*}hive.server2.logging.operation.level{*}:

 * 
 **  NONE:     Ignore any logging
 **  EXECUTION:   Log completion of tasks
 **  PERFORMANCE: Execution + Performance logs
 **  VERBOSE:     All logs
 * Log level can be changed on session level.
 * The default log level is {{{}EXECUTION{}}}, which displays exception stack 
traces which is not good as a default for non-technical users.

+*Problem Description:*+

Currently, when '{*}hive.server2.async.exec.async.compile{*}' {*}= 
'{*}{*}true{*}' and an exception happens, an operational log is not displayed 
in Beeline and Hue (because stmtHandle is empty) and only exception message is 
displayed. Query id is not displayed.

When *'hive.server2.async.exec.async.compile' = 'false'* and operational log 
level != 'NONE'{*},{*} operational log is displayed with query id and exception 
stack trace and also exception message is displayed.

End-users do not need to see exception stack traces by default, but when a 
query fails they should know Query ID, because using one they can find stack 
traces and other info in HiveServer2 log.

+*Proposed Solution:*+

Proposing to change *hive.server2.logging.operation.level* {{to NONE by default 
and to add Query ID to HiveSQLException when the operational log level = 'NONE' 
or when '{*}hive.server2.async.exec.async.compile{*}' = '{*}true'{*}, 
}}{{{}because in these 2 cases the operational log is not displayed. This will 
ensure that by default exception stack trace won't be shown and that query id 
will always be shown for the user.{}}}{{{}{}}}

         


> Unify operational log behavior
> ------------------------------
>
>                 Key: HIVE-28579
>                 URL: https://issues.apache.org/jira/browse/HIVE-28579
>             Project: Hive
>          Issue Type: Improvement
>      Security Level: Public(Viewable by anyone) 
>            Reporter: Dmitriy Fingerman
>            Assignee: Dmitriy Fingerman
>            Priority: Major
>         Attachments: Screenshot 2024-10-23 at 5.54.03 PM.png
>
>
> +*Background:*+
> Hive operational log is a query log that contains messages for a specific 
> query id and is intended for Hive clients.
> When operational log is enabled, it shows query id, exception stack traces 
> and other messages in Hue and Beeline (see screenshot attached). Hive clients 
> fetch the operational log using Hive-specific jdbc method 
> *HiveStatement.getQueryLog.*
> The following settings control operational log behavior:
>  * {*}Hive.server2.logging.operation.enabled{*}: true/false (true by default)
>  * {*}hive.server2.logging.operation.level{*}:
>  * 
>  **  NONE:     Ignore any logging
>  **  EXECUTION:   Log completion of tasks
>  **  PERFORMANCE: Execution + Performance logs
>  **  VERBOSE:     All logs
>  * Log level can be changed on session level.
>  * The default log level is {{{}EXECUTION{}}}, which displays exception stack 
> traces which is not good as a default for non-technical users.
> +*Problem Description:*+
> Currently, when '{*}hive.server2.async.exec.async.compile{*}' {*}= 
> '{*}{*}true{*}' and an exception happens, an operational log is not displayed 
> in Beeline and Hue (because stmtHandle is empty) and only exception message 
> is displayed. Query id is not displayed.
> When *'hive.server2.async.exec.async.compile' = 'false'* and operational log 
> level != 'NONE'{*},{*} operational log is displayed with query id and 
> exception stack trace and also exception message is displayed.
> End-users do not need to see exception stack traces by default, but when a 
> query fails they should know Query ID, because using one they can find stack 
> traces and other info in HiveServer2 log.
> +*Proposed Solution:*+
> Proposing to:
>  # Change '{*}hive.server2.logging.operation.level'{*} to 'NONE' by default 
> to hide exception stack traces from end-users
>  # Add query id to HiveSQLException's message when the operational log level 
> = 'NONE' or when {*}'hive.server2.async.exec.async.compile' = 'true'{*}, 
> because in these 2 cases the operational log is not displayed and therefore a 
> query id is also not displayed. This will ensure that by default exception 
> stack trace won't be shown and that query id will always be shown for the 
> user.
>          



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

Reply via email to