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

Sergio Peña commented on HIVE-18941:
------------------------------------

[~akolb] and for the person who will work on this issue. There is a logic on 
the MetaStoreListenerNotifier.notifyEvent() methods that add a flag to the 
listener response parameters that specify whether such listener is executed 
inside an active transaction or not. This was very useful for Sentry to detect 
if some non-listener calls where indeed called inside a current transaction and 
ignore them if they are.

The logic is like this:
{noformat}
if (ms != null) {
    event.putParameter(HIVE_METASTORE_TRANSACTION_ACTIVE, 
Boolean.toString(ms.isActiveTransaction()));
}
{noformat}
See the code:
[https://github.com/apache/hive/blob/master/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreListenerNotifier.java#L291]

 

 

> HMS non-transactional listener may be called in transactional context
> ---------------------------------------------------------------------
>
>                 Key: HIVE-18941
>                 URL: https://issues.apache.org/jira/browse/HIVE-18941
>             Project: Hive
>          Issue Type: Bug
>          Components: Metastore
>    Affects Versions: 2.0.2, 3.0.0
>            Reporter: Alexander Kolbasov
>            Priority: Major
>
> When HMS code calls listeners it assumes that they are *not* called as part 
> of the transaction. This isn't quite true because of the nested transaction - 
> it is quite possible that these listeners are called as part of the bigger 
> nested transaction. This causes several potential issues:
> 1) It changes the assumptions about the context in which these listeners run
> 2) It creates possibilities for deadlocks
> 3) Some of these listeners may do relative long operations which may delay 
> transaction commits.
> [~spena] FYI.



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

Reply via email to