chenqizhu created FLINK-29839:
---------------------------------

             Summary: SQL Gateway with hiveserver2 throw exception
                 Key: FLINK-29839
                 URL: https://issues.apache.org/jira/browse/FLINK-29839
             Project: Flink
          Issue Type: Bug
          Components: Table SQL / Gateway
    Affects Versions: 1.16.0
         Environment: Flink version: 1.16.0
Hive version: 3.1.2
            Reporter: chenqizhu


 I had starting the SQL Gateway with the HiveServer2 Endpoint, and then I 
submit SQL with Hive Beeline, but I get the following exception:
{code:java}
java.lang.UnsupportedOperationException: Unrecognized TGetInfoType value: 
CLI_ODBC_KEYWORDS.
at 
org.apache.flink.table.endpoint.hive.HiveServer2Endpoint.GetInfo(HiveServer2Endpoint.java:371)
 [flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
org.apache.hive.service.rpc.thrift.TCLIService$Processor$GetInfo.getResult(TCLIService.java:1537)
 [flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
org.apache.hive.service.rpc.thrift.TCLIService$Processor$GetInfo.getResult(TCLIService.java:1522)
 [flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) 
[flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) 
[flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
 [flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 
[?:?]
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
[?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
2022-11-01 13:55:33,885 ERROR org.apache.thrift.server.TThreadPoolServer        
           [] - Thrift error occurred during processing of message.
org.apache.thrift.protocol.TProtocolException: Required field 'infoValue' is 
unset! Struct:TGetInfoResp(status:TStatus(statusCode:ERROR_STATUS, 
infoMessages:[*java.lang.UnsupportedOperationException:Unrecognized 
TGetInfoType value: CLI_ODBC_KEYWORDS.:9:8, 
org.apache.flink.table.endpoint.hive.HiveServer2Endpoint:GetInfo:HiveServer2Endpoint.java:371,
 
org.apache.hive.service.rpc.thrift.TCLIService$Processor$GetInfo:getResult:TCLIService.java:1537,
 
org.apache.hive.service.rpc.thrift.TCLIService$Processor$GetInfo:getResult:TCLIService.java:1522,
 org.apache.thrift.ProcessFunction:process:ProcessFunction.java:39, 
org.apache.thrift.TBaseProcessor:process:TBaseProcessor.java:39, 
org.apache.thrift.server.TThreadPoolServer$WorkerProcess:run:TThreadPoolServer.java:286,
 
java.util.concurrent.ThreadPoolExecutor:runWorker:ThreadPoolExecutor.java:1128, 
java.util.concurrent.ThreadPoolExecutor$Worker:run:ThreadPoolExecutor.java:628, 
java.lang.Thread:run:Thread.java:834], errorMessage:Unrecognized TGetInfoType 
value: CLI_ODBC_KEYWORDS.), infoValue:null)
at 
org.apache.hive.service.rpc.thrift.TGetInfoResp.validate(TGetInfoResp.java:379) 
~[flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
org.apache.hive.service.rpc.thrift.TCLIService$GetInfo_result.validate(TCLIService.java:5228)
 ~[flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
org.apache.hive.service.rpc.thrift.TCLIService$GetInfo_result$GetInfo_resultStandardScheme.write(TCLIService.java:5285)
 ~[flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
org.apache.hive.service.rpc.thrift.TCLIService$GetInfo_result$GetInfo_resultStandardScheme.write(TCLIService.java:5254)
 ~[flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
org.apache.hive.service.rpc.thrift.TCLIService$GetInfo_result.write(TCLIService.java:5205)
 ~[flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:53) 
~[flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) 
~[flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
 [flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 
[?:?]
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
[?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
2022-11-01 13:55:33,886 WARN  org.apache.thrift.transport.TIOStreamTransport    
           [] - Error closing output stream.
java.net.SocketException: Socket closed
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113) ~[?:?]
at java.net.SocketOutputStream.write(SocketOutputStream.java:150) ~[?:?]
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81) ~[?:?]
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142) ~[?:?]
at java.io.FilterOutputStream.close(FilterOutputStream.java:182) ~[?:?]
at 
org.apache.thrift.transport.TIOStreamTransport.close(TIOStreamTransport.java:110)
 [flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at org.apache.thrift.transport.TSocket.close(TSocket.java:235) 
[flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:303)
 [flink-sql-connector-hive-3.1.2_2.12-1.16.0.jar:1.16.0]
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 
[?:?]
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
[?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
{code}

 I look up the source code and find this code, but I do not know how to solve 
the above exception.

{code:java}
public TGetInfoResp GetInfo(TGetInfoReq tGetInfoReq) throws TException {
    TGetInfoResp resp = new TGetInfoResp();
try {
        GatewayInfo info = service.getGatewayInfo();
TGetInfoValue tInfoValue;
switch (tGetInfoReq.getInfoType()) {
            case CLI_SERVER_NAME:
            case CLI_DBMS_NAME:
                tInfoValue = TGetInfoValue.stringValue(info.getProductName());
break;
case CLI_DBMS_VER:
                tInfoValue = 
TGetInfoValue.stringValue(info.getVersion().toString());
break;
default:
                throw new UnsupportedOperationException(
                        String.format(
                                "Unrecognized TGetInfoType value: %s.",
tGetInfoReq.getInfoType()));
}
        resp.setStatus(OK_STATUS);
resp.setInfoValue(tInfoValue);
} catch (Throwable t) {
        LOG.error("Failed to GetInfo.", t);
resp.setStatus(toTStatus(t));
}
    return resp;
}
{code}







--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to