zhangbutao commented on PR #3393:
URL: https://github.com/apache/hive/pull/3393#issuecomment-1164078451

   @zabetak I checked beeline code adn hs2 code, and i still think this change 
should be fixed in hs2 side. Here's my test, please correct me if i am wrong. 
Thank you.
   
   1. Use following query to test exception message:
   `set hive.support.concurrency=false;`
   `set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;`
   `create table testacid(id int) stored as orc 
tblproperties('transactional'='true');`
   
   2. The final result which wraps exception returned from **HS2 side**, a 
_**TExecuteStatementResp**_ object
   
https://github.com/apache/hive/blob/8f1a5b6854daf5fb4814632f9356ef5fe7bb6964/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java#L672-L679
   And the final exception massage is set  using 
_tStatus.setErrorMessage(getMessage());_, that is say client can only get 
simplified exception message(**_Error running query_**) instead of full 
exception stacktrace:
   
https://github.com/apache/hive/blob/8f1a5b6854daf5fb4814632f9356ef5fe7bb6964/service/src/java/org/apache/hive/service/cli/HiveSQLException.java#L131
   
   3. The excepton displayed from the **Beeline side**:
   Beeline client gets query response (**_TExecuteStatementResp_** object) from 
HS2 side, and uses _Utils.verifySuccessWithInfo(execResp.getStatus())_ to check 
status or throw exception:
   
https://github.com/apache/hive/blob/8f1a5b6854daf5fb4814632f9356ef5fe7bb6964/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java#L353-L354
   
https://github.com/apache/hive/blob/8f1a5b6854daf5fb4814632f9356ef5fe7bb6964/jdbc/src/java/org/apache/hive/jdbc/Utils.java#L378-L383
   The final exception message displayed to client is 
_status.getErrorMessage()_, that is "**_Error running query_**" returned from 
HS2 side:
   
https://github.com/apache/hive/blob/8f1a5b6854daf5fb4814632f9356ef5fe7bb6964/service/src/java/org/apache/hive/service/cli/HiveSQLException.java#L117-L118
   
   
   So, i think the root cause was that HS2 side did not return full valid 
exception message, and because we often use **_e.getMessage()_** to retrieve 
meaningful exception, we should add message content when throw a exception, 
e.g.:
   `throw new HiveSQLException("Error running query: " + e.toString(), e);`


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to