Xiwei Wang created HIVE-27805:
---------------------------------
Summary: Hive server2 connections limits bug
Key: HIVE-27805
URL: https://issues.apache.org/jira/browse/HIVE-27805
Project: Hive
Issue Type: Bug
Components: HiveServer2
Affects Versions: 3.1.3, 3.1.2, 3.1.1, 3.0.0, 3.1.0
Environment: image: apache/hive:3.1.3
jdbc driver: hive-jdbc:2.1.0
Reporter: Xiwei Wang
When I use JDBC and specify a non-existent database to connect to a hiveserver2
that configured hive.server2.limit.connections.per.user=10, a session
initialization error occurs(org.apache.hive.service.cli.HiveSQLException:
Failed to open new session: Database not_exists_db does not exist); and even a
normal connection will report an error after the number of attempts exceeds the
maximum limit I configured (org.apache.hive.service.cli.HiveSQLException:
Connection limit per user reached (user: aeolus limit: 10))
I found that inside the method
org.apache.hive.service.cli.session.SessionManager#createSession
, if seesion initialization fails, it will cause the increased number of
connections called incrementConnections cannot be released; after the number of
failures exceeds the maximum number of connections configured by the user, such
as hive.server2.limit.connections.per.user, hiveserver2 will not accept any
connections due to the limitations.
{code:java}
2023-10-17T12:14:54,313 WARN [HiveServer2-Handler-Pool: Thread-3329]
thrift.ThriftCLIService: Error opening session:
org.apache.hive.service.cli.HiveSQLException: Failed to open new session:
Database not_exists_db does not exist
at
org.apache.hive.service.cli.session.SessionManager.createSession(SessionManager.java:434)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.hive.service.cli.session.SessionManager.openSession(SessionManager.java:373)
~[hive-service-3.1.3.jar:3.1.3]
at org.apache.hive.service.cli.CLIService.openSession(CLIService.java:187)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.hive.service.cli.thrift.ThriftCLIService.getSessionHandle(ThriftCLIService.java:475)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.hive.service.cli.thrift.ThriftCLIService.OpenSession(ThriftCLIService.java:322)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.hive.service.rpc.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1497)
~[hive-exec-3.1.3.jar:3.1.3]
at
org.apache.hive.service.rpc.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1482)
~[hive-exec-3.1.3.jar:3.1.3]
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
~[hive-exec-3.1.3.jar:3.1.3]
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
~[hive-exec-3.1.3.jar:3.1.3]
at
org.apache.hive.service.auth.TSetIpAddressProcessor.process(TSetIpAddressProcessor.java:56)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
~[hive-exec-3.1.3.jar:3.1.3]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
~[?:1.8.0_342]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
~[?:1.8.0_342]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_342]
Caused by: org.apache.hive.service.cli.HiveSQLException: Database dw_aeolus
does not exist
at
org.apache.hive.service.cli.session.HiveSessionImpl.configureSession(HiveSessionImpl.java:294)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.hive.service.cli.session.HiveSessionImpl.open(HiveSessionImpl.java:199)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.hive.service.cli.session.SessionManager.createSession(SessionManager.java:425)
~[hive-service-3.1.3.jar:3.1.3]
... 13 more
2023-10-17T12:14:54,972 INFO [HiveServer2-Handler-Pool: Thread-3330]
thrift.ThriftCLIService: Client protocol version: HIVE_CLI_SERVICE_PROTOCOL_V8
2023-10-17T12:14:54,973 ERROR [HiveServer2-Handler-Pool: Thread-3330]
service.CompositeService: Connection limit per user reached (user: aeolus
limit: 10)
2023-10-17T12:14:54,973 WARN [HiveServer2-Handler-Pool: Thread-3330]
thrift.ThriftCLIService: Error opening session:
org.apache.hive.service.cli.HiveSQLException: Connection limit per user reached
(user: aeolus limit: 10)
at
org.apache.hive.service.cli.session.SessionManager.incrementConnections(SessionManager.java:476)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.hive.service.cli.session.SessionManager.createSession(SessionManager.java:383)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.hive.service.cli.session.SessionManager.openSession(SessionManager.java:373)
~[hive-service-3.1.3.jar:3.1.3]
at org.apache.hive.service.cli.CLIService.openSession(CLIService.java:187)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.hive.service.cli.thrift.ThriftCLIService.getSessionHandle(ThriftCLIService.java:475)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.hive.service.cli.thrift.ThriftCLIService.OpenSession(ThriftCLIService.java:322)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.hive.service.rpc.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1497)
~[hive-exec-3.1.3.jar:3.1.3]
at
org.apache.hive.service.rpc.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1482)
~[hive-exec-3.1.3.jar:3.1.3]
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
~[hive-exec-3.1.3.jar:3.1.3]
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
~[hive-exec-3.1.3.jar:3.1.3]
at
org.apache.hive.service.auth.TSetIpAddressProcessor.process(TSetIpAddressProcessor.java:56)
~[hive-service-3.1.3.jar:3.1.3]
at
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
~[hive-exec-3.1.3.jar:3.1.3]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
~[?:1.8.0_342]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
~[?:1.8.0_342]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_342] {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)