This is an automated email from the ASF dual-hosted git repository.
feiwang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-kyuubi.git
The following commit(s) were added to refs/heads/master by this push:
new 1a3228f [KYUUBI #1415] Immediately wrap the thrift client with a
thread-safe proxy
1a3228f is described below
commit 1a3228f132050ec82225af08252e5e955fe5cc08
Author: Cheng Pan <[email protected]>
AuthorDate: Thu Nov 18 18:25:01 2021 +0800
[KYUUBI #1415] Immediately wrap the thrift client with a thread-safe proxy
### _Why are the changes needed?_
Sync before async engine log request has been sent
```
- open session with KyuubiConnection *** FAILED ***
java.sql.SQLException:
org.apache.kyuubi.shade.org.apache.thrift.transport.TTransportException: Read a
negative frame size (-2147418110)!
at
org.apache.kyuubi.jdbc.hive.KyuubiStatement.runAsyncOnServer(KyuubiStatement.java:271)
at
org.apache.kyuubi.jdbc.hive.KyuubiStatement.execute(KyuubiStatement.java:193)
at
org.apache.kyuubi.operation.KyuubiOperationPerConnectionSuite.$anonfun$new$20(KyuubiOperationPerConnectionSuite.scala:145)
at
org.apache.kyuubi.operation.HiveJDBCTestHelper.withSessionConf(HiveJDBCTestHelper.scala:60)
at
org.apache.kyuubi.operation.HiveJDBCTestHelper.withSessionConf$(HiveJDBCTestHelper.scala:53)
at
org.apache.kyuubi.operation.KyuubiOperationPerConnectionSuite.withSessionConf(KyuubiOperationPerConnectionSuite.scala:33)
at
org.apache.kyuubi.operation.KyuubiOperationPerConnectionSuite.$anonfun$new$19(KyuubiOperationPerConnectionSuite.scala:140)
at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
...
Cause:
org.apache.kyuubi.shade.org.apache.thrift.transport.TTransportException: Read a
negative frame size (-2147418110)!
at
org.apache.kyuubi.shade.org.apache.thrift.transport.TSaslTransport.readFrame(TSaslTransport.java:456)
at
org.apache.kyuubi.shade.org.apache.thrift.transport.TSaslTransport.read(TSaslTransport.java:435)
at
org.apache.kyuubi.shade.org.apache.thrift.transport.TSaslClientTransport.read(TSaslClientTransport.java:37)
at
org.apache.kyuubi.shade.org.apache.thrift.transport.TTransport.readAll(TTransport.java:86)
at
org.apache.kyuubi.shade.org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:429)
at
org.apache.kyuubi.shade.org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:318)
at
org.apache.kyuubi.shade.org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:219)
at
org.apache.kyuubi.shade.org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:77)
at
org.apache.kyuubi.shade.org.apache.hive.service.rpc.thrift.TCLIService$Client.recv_ExecuteStatement(TCLIService.java:237)
at
org.apache.kyuubi.shade.org.apache.hive.service.rpc.thrift.TCLIService$Client.ExecuteStatement(TCLIService.java:224)
...
```
### _How was this patch tested?_
- [ ] Add some test cases that check the changes thoroughly including
negative and positive cases if possible
- [ ] Add screenshots for manual tests if appropriate
- [x] [Run
test](https://kyuubi.readthedocs.io/en/latest/develop_tools/testing.html#running-tests)
locally before make a pull request
Closes #1415 from pan3793/sync.
Closes #1415
5b7ca1bd [Cheng Pan] Immediately wrap the thrift client with a thread-safe
proxy
Authored-by: Cheng Pan <[email protected]>
Signed-off-by: fwang12 <[email protected]>
---
.../java/org/apache/kyuubi/jdbc/hive/KyuubiConnection.java | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git
a/kyuubi-hive-jdbc/src/main/java/org/apache/kyuubi/jdbc/hive/KyuubiConnection.java
b/kyuubi-hive-jdbc/src/main/java/org/apache/kyuubi/jdbc/hive/KyuubiConnection.java
index 873e651..f50750e 100644
---
a/kyuubi-hive-jdbc/src/main/java/org/apache/kyuubi/jdbc/hive/KyuubiConnection.java
+++
b/kyuubi-hive-jdbc/src/main/java/org/apache/kyuubi/jdbc/hive/KyuubiConnection.java
@@ -163,8 +163,9 @@ public class KyuubiConnection implements
java.sql.Connection {
if (isEmbeddedMode) {
EmbeddedThriftBinaryCLIService embeddedClient = new
EmbeddedThriftBinaryCLIService();
embeddedClient.init(null);
- client = embeddedClient;
-
+ TCLIService.Iface _client = client = embeddedClient;
+ // Wrap the client with a thread-safe proxy to serialize the RPC calls
+ client = newSynchronizedClient(_client);
// open client session
openSession();
showLaunchEngineLog();
@@ -184,7 +185,9 @@ public class KyuubiConnection implements
java.sql.Connection {
// open the client transport
openTransport();
// set up the client
- client = new TCLIService.Client(new TBinaryProtocol(transport));
+ TCLIService.Iface _client = new TCLIService.Client(new
TBinaryProtocol(transport));
+ // Wrap the client with a thread-safe proxy to serialize the RPC
calls
+ client = newSynchronizedClient(_client);
// open client session
openSession();
if (!isBeeLineMode) {
@@ -220,9 +223,6 @@ public class KyuubiConnection implements
java.sql.Connection {
}
}
}
-
- // Wrap the client with a thread-safe proxy to serialize the RPC calls
- client = newSynchronizedClient(client);
}
/**