Massoud Mazar created HIVE-21271:
------------------------------------

             Summary: "Error in acquiring locks" when querying a large 
partitioned table
                 Key: HIVE-21271
                 URL: https://issues.apache.org/jira/browse/HIVE-21271
             Project: Hive
          Issue Type: Bug
          Components: Standalone Metastore
    Affects Versions: 3.1.0
         Environment: Hortonworks HDP 3.1 using Azure SQL as metastore
            Reporter: Massoud Mazar


When querying a large partitioned table, acquiring lock on partitions fails due 
to limitation of the RDBMS used as metastore in total number of parameters it 
can accept.

Specifically, when MSSQL server is used as metastore, since it only allows 2100 
parameters in a request, it causes failure in enqueueLockWithRetry.

Table in question has only one level of partition which is epoch of the start 
of each day. When querying (simple SELECT COUNT(1)) for one whole year, it 
fails with this error, but shorter date ranges are fine.
{code:java}
2019-02-14T23:37:15,688 INFO  [pool-7-thread-189]: metastore.MetaStoreDirectSql 
(MetaStoreDirectSql.java:aggrColStatsForPartitions(1485)) - 
useDensityFunctionForNDVEstimation = false

partsFound = 0

ColumnStatisticsObj = []

2019-02-14T23:37:16,134 INFO  [pool-7-thread-189]: txn.TxnHandler 
(TxnHandler.java:checkRetryable(3723)) - Non-retryable error in 
enqueueLockWithRetry(LockRequest(component:[LockComponent(type:SHARED_READ, 
level:PARTITION, dbname:default, tablename:trips, 
partitionname:tripstartday=1523664000, operationType:SELECT, 
isTransactional:true), LockComponent(type:SHARED_READ, level:PARTITION, 
dbname:default, tablename:trips, partitionname:tripstartday=1538265600, 
operationType:SELECT, isTransactional:true), LockComponent(type:SHARED_READ, 
level:PARTITION, dbname:default, tablename:trips, 
partitionname:tripstartday=152012......
....
: The incoming request has too many parameters. The server supports a maximum 
of 2100 parameters. Reduce the number of parameters and resend the request. 
(SQLState=S0001, ErrorCode=8003)

2019-02-14T23:37:16,136 ERROR [pool-7-thread-189]: metastore.RetryingHMSHandler 
(RetryingHMSHandler.java:invokeInternal(201)) - MetaException(message:Unable to 
update transaction database com.microsoft.sqlserver.jdbc.SQLServerException: 
The incoming request has too many parameters. The server supports a maximum of 
2100 parameters. Reduce the number of parameters and resend the request.

at 
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:254)

at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1608)

at 
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:578)

at 
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:508)

at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240)

at 
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869)

at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:243)

at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:218)

at 
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:461)

at 
com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)

at 
com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)

at 
org.apache.hadoop.hive.metastore.txn.TxnHandler.enqueueLockWithRetry(TxnHandler.java:2421)

at org.apache.hadoop.hive.metastore.txn.TxnHandler.lock(TxnHandler.java:2168)

at 
org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.lock(HiveMetaStore.java:7598)

at sun.reflect.GeneratedMethodAccessor92.invoke(Unknown Source)

at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at 
org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:147)

at 
org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:108)

at com.sun.proxy.$Proxy31.lock(Unknown Source)

at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$lock.getResult(ThriftHiveMetastore.java:18738)

at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$lock.getResult(ThriftHiveMetastore.java:18722)

at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)

at 
org.apache.hadoop.hive.metastore.TUGIBasedProcessor$1.run(TUGIBasedProcessor.java:111)

at 
org.apache.hadoop.hive.metastore.TUGIBasedProcessor$1.run(TUGIBasedProcessor.java:107)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:422)

at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730)

at 
org.apache.hadoop.hive.metastore.TUGIBasedProcessor.process(TUGIBasedProcessor.java:119)

at 
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)

at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:745)

)

at 
org.apache.hadoop.hive.metastore.txn.TxnHandler.enqueueLockWithRetry(TxnHandler.java:2431)

at org.apache.hadoop.hive.metastore.txn.TxnHandler.lock(TxnHandler.java:2168)

at 
org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.lock(HiveMetaStore.java:7598)

at sun.reflect.GeneratedMethodAccessor92.invoke(Unknown Source)

at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at 
org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:147)

at 
org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:108)

at com.sun.proxy.$Proxy31.lock(Unknown Source)

at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$lock.getResult(ThriftHiveMetastore.java:18738)

at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$lock.getResult(ThriftHiveMetastore.java:18722)

at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)

at 
org.apache.hadoop.hive.metastore.TUGIBasedProcessor$1.run(TUGIBasedProcessor.java:111)

at 
org.apache.hadoop.hive.metastore.TUGIBasedProcessor$1.run(TUGIBasedProcessor.java:107)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:422)

at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730)

at 
org.apache.hadoop.hive.metastore.TUGIBasedProcessor.process(TUGIBasedProcessor.java:119)

at 
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)

at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:745){code}



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

Reply via email to