Eugene Koifman created HIVE-14192:
-------------------------------------
Summary: 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
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)