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

Hari Sankar Sivarama Subramaniyan commented on HIVE-13608:
----------------------------------------------------------

[~ashutoshc] I looked at this option. I am a +0 for this idea of parsing the 
error message to see if it matches some string and prevent the retry altogether.

{code}
else if ((t instanceof MetaException) && t.getMessage().matches(
            "(?s).*(JDO[a-zA-Z]*|TProtocol|TTransport)Exception.*")) {
          caughtException = (MetaException)t;
        } 
{code} 
This can make the man-in-the-middle attack scenario with the current system 
worse. I realize why the above code was added in the first place to tackle 
JDO*/T* exceptions which are unrecoverable otherwise, but still this whole 
thing is hacky and adding more parsing messages here will worsen the existing 
code.

For practical purpose, the change you mentioned should be ok and I can upload 
the patch, but as I said, this is something that needs to be revisited to 
increase the security of the product.

Thanks
Hari

> We should provide better error message while constraints with duplicate names 
> are created
> -----------------------------------------------------------------------------------------
>
>                 Key: HIVE-13608
>                 URL: https://issues.apache.org/jira/browse/HIVE-13608
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Hari Sankar Sivarama Subramaniyan
>            Assignee: Hari Sankar Sivarama Subramaniyan
>         Attachments: HIVE-13608.1.patch
>
>
> {code}
> PREHOOK: query: create table t1(x int, constraint pk1 primary key (x) disable 
> novalidate)
> PREHOOK: type: CREATETABLE
> PREHOOK: Output: database:default
> PREHOOK: Output: default@t1
> POSTHOOK: query: create table t1(x int, constraint pk1 primary key (x) 
> disable novalidate)
> POSTHOOK: type: CREATETABLE
> POSTHOOK: Output: database:default
> POSTHOOK: Output: default@t1
> PREHOOK: query: create table t2(x int, constraint pk1 primary key (x) disable 
> novalidate)
> PREHOOK: type: CREATETABLE
> PREHOOK: Output: database:default
> PREHOOK: Output: default@t2
> FAILED: Execution Error, return code 1 from 
> org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:For direct 
> MetaStore DB connections, we don't support retries at the client level.)
> {code}
> In the above case, it seems like useful error message is lost. It looks like 
> a  generic problem with metastore server/client exception handling and 
> message propagation. Seems like exception parsing logic of 
> RetryingMetaStoreClient::invoke() needs to be updated.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to