[ 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.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)