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

Eugene Koifman updated HIVE-14192:
----------------------------------
    Status: Patch Available  (was: Open)

> False positive error due to thrift
> ----------------------------------
>
>                 Key: HIVE-14192
>                 URL: https://issues.apache.org/jira/browse/HIVE-14192
>             Project: Hive
>          Issue Type: Bug
>          Components: Metastore, Transactions
>    Affects Versions: 2.1.0, 1.3.0
>            Reporter: Eugene Koifman
>            Assignee: Eugene Koifman
>         Attachments: HIVE-14192.2.patch, HIVE-14192.patch
>
>
> Given Thrift definition like this
> {noformat}
> struct LockComponent {
>     1: required LockType type,
>     2: required LockLevel level,
>     3: required string dbname,
>     4: optional string tablename,
>     5: optional string partitionname,
>     6: optional DataOperationType operationType = DataOperationType.UNSET,
>     7: optional bool isAcid = false
> }
> {noformat}
> The generated LockComponent has 
> {noformat}
>   public LockComponent() {
>     this.operationType = 
> org.apache.hadoop.hive.metastore.api.DataOperationType.UNSET;
>     this.isAcid = false;
>   }
>   public boolean isSetOperationType() {
>     return this.operationType != null;
>   }
>   public boolean isSetIsAcid() {
>     return EncodingUtils.testBit(__isset_bitfield, __ISACID_ISSET_ID);
>   }
> {noformat}
> So bottom line is even if LockComponent is created by old version of the 
> client which doesn't have operationType filed, isSetOperationType() will 
> still return true on the server.
> This causes a false positive exception in TxnHandler.enqueueLockWithRetry() 
> during Rolling Upgrade scenarios.



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

Reply via email to