[ 
https://issues.apache.org/jira/browse/HIVE-25307?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matt McCline updated HIVE-25307:
--------------------------------
    Description: 
A RuntimeException is thrown by the Thrift library that causes Hive Server 2 to 
crash on our customer's machine. If you Google this the exception has been 
reported a couple of times over the years but not fixed. A blog (see references 
below) says it is an occasional security protocol issue between Hive Server 2 
and a proxy like a Gateway.

One challenge in the older 0.9.3 Thrift version was the Thrift 
TTransportFactory getTransport method declaration had throws no Exceptions. 
Hence the likely choice of RuntimeException. But that Exception is fatal to 
Hive Server 2.

The proposed fix is a work around is we catch RuntimeException in the inner 
class TUGIAssumingTransportFactory of the HadoopThriftAuthBridge class in Hive 
Server 2.  And throw a throw the RuntimeException's (inner) cause (e.g. 
TSaslTransportException) as a TTransportException.

Once the Thrift library stops throwing RuntimeException or we catch fatal 
Throwable exceptions in the Thrift library's TThreadPoolServer's inner class 
WorkerProcess run method and display them, the RuntimeException try/catch 
clause can be removed.

ExceptionClassName:
 java.lang.RuntimeException
 ExceptionStackTrace:
 java.lang.RuntimeException: 
org.apache.thrift.transport.TSaslTransportException: No data or no sasl data in 
the stream

              at 
org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219)

              at 
org.apache.hadoop.hive.metastore.security.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory$1.run(HadoopThriftAuthBridge.java:694)

              at 
org.apache.hadoop.hive.metastore.security.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory$1.run(HadoopThriftAuthBridge.java:691)

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

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

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

              at 
org.apache.hadoop.hive.metastore.security.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory.getTransport(HadoopThriftAuthBridge.java:691)

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

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

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

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

Caused by: org.apache.thrift.transport.TSaslTransportException: No data or no 
sasl data in the stream

              at 
org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:326)

              at 
org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41)

              at 
org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216)

              ... 10 more

 

References:

[Hive server 2 thrift error - Cloudera Community - 
34293|https://community.cloudera.com/t5/Support-Questions/Hive-server-2-thrift-error/td-p/34293]

Eric Lin blog "“NO DATA OR NO SASL DATA IN THE STREAM” ERROR IN HIVESERVER2 LOG"

HIVE-12754 AuthTypes.NONE cause exception after HS2 start - ASF JIRA 
(apache.org)

 

  was:
A RuntimeException is thrown by the Thrift library that causes Hive Server 2 to 
crash on our customer's machine. If you Google this the exception has been 
reported a couple of times over the years but not fixed. A blog (see references 
below) says it is an occasional security protocol issue between Hive Server 2 
and a proxy like a Gateway.

One challenge in the older 0.9.3 Thrift version was the Thrift 
TTransportFactory getTransport method declaration had throws no Exceptions. 
Hence the likely choice of RuntimeException. But that Exception is fatal to 
Hive Server 2.

The proposed fix is a work around is we catch RuntimeException in the inner 
class TUGIAssumingTransportFactory of the HadoopThriftAuthBridge class in Hive 
Server 2.  And throw a throw the RuntimeException's (inner) cause as a 
TTransportException.

 

ExceptionClassName:
 java.lang.RuntimeException
 ExceptionStackTrace:
 java.lang.RuntimeException: 
org.apache.thrift.transport.TSaslTransportException: No data or no sasl data in 
the stream

              at 
org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219)

              at 
org.apache.hadoop.hive.metastore.security.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory$1.run(HadoopThriftAuthBridge.java:694)

              at 
org.apache.hadoop.hive.metastore.security.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory$1.run(HadoopThriftAuthBridge.java:691)

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

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

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

              at 
org.apache.hadoop.hive.metastore.security.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory.getTransport(HadoopThriftAuthBridge.java:691)

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

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

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

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

Caused by: org.apache.thrift.transport.TSaslTransportException: No data or no 
sasl data in the stream

              at 
org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:326)

              at 
org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41)

              at 
org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216)

              ... 10 more

 

References:

[Hive server 2 thrift error - Cloudera Community - 
34293|https://community.cloudera.com/t5/Support-Questions/Hive-server-2-thrift-error/td-p/34293]

Eric Lin blog "“NO DATA OR NO SASL DATA IN THE STREAM” ERROR IN HIVESERVER2 LOG"

HIVE-12754 AuthTypes.NONE cause exception after HS2 start - ASF JIRA 
(apache.org)

 


> Hive Server 2 crashes when Thrift library encounters particular security 
> protocol issue
> ---------------------------------------------------------------------------------------
>
>                 Key: HIVE-25307
>                 URL: https://issues.apache.org/jira/browse/HIVE-25307
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Matt McCline
>            Assignee: Matt McCline
>            Priority: Critical
>              Labels: pull-request-available
>         Attachments: hive-thrift-fix-02-3_1.patch
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> A RuntimeException is thrown by the Thrift library that causes Hive Server 2 
> to crash on our customer's machine. If you Google this the exception has been 
> reported a couple of times over the years but not fixed. A blog (see 
> references below) says it is an occasional security protocol issue between 
> Hive Server 2 and a proxy like a Gateway.
> One challenge in the older 0.9.3 Thrift version was the Thrift 
> TTransportFactory getTransport method declaration had throws no Exceptions. 
> Hence the likely choice of RuntimeException. But that Exception is fatal to 
> Hive Server 2.
> The proposed fix is a work around is we catch RuntimeException in the inner 
> class TUGIAssumingTransportFactory of the HadoopThriftAuthBridge class in 
> Hive Server 2.  And throw a throw the RuntimeException's (inner) cause (e.g. 
> TSaslTransportException) as a TTransportException.
> Once the Thrift library stops throwing RuntimeException or we catch fatal 
> Throwable exceptions in the Thrift library's TThreadPoolServer's inner class 
> WorkerProcess run method and display them, the RuntimeException try/catch 
> clause can be removed.
> ExceptionClassName:
>  java.lang.RuntimeException
>  ExceptionStackTrace:
>  java.lang.RuntimeException: 
> org.apache.thrift.transport.TSaslTransportException: No data or no sasl data 
> in the stream
>               at 
> org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219)
>               at 
> org.apache.hadoop.hive.metastore.security.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory$1.run(HadoopThriftAuthBridge.java:694)
>               at 
> org.apache.hadoop.hive.metastore.security.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory$1.run(HadoopThriftAuthBridge.java:691)
>               at java.security.AccessController.doPrivileged(Native Method)
>               at javax.security.auth.Subject.doAs(Subject.java:360)
>               at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1710)
>               at 
> org.apache.hadoop.hive.metastore.security.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory.getTransport(HadoopThriftAuthBridge.java:691)
>               at 
> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:269)
>               at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>               at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>               at java.lang.Thread.run(Thread.java:748)
> Caused by: org.apache.thrift.transport.TSaslTransportException: No data or no 
> sasl data in the stream
>               at 
> org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:326)
>               at 
> org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41)
>               at 
> org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216)
>               ... 10 more
>  
> References:
> [Hive server 2 thrift error - Cloudera Community - 
> 34293|https://community.cloudera.com/t5/Support-Questions/Hive-server-2-thrift-error/td-p/34293]
> Eric Lin blog "“NO DATA OR NO SASL DATA IN THE STREAM” ERROR IN HIVESERVER2 
> LOG"
> HIVE-12754 AuthTypes.NONE cause exception after HS2 start - ASF JIRA 
> (apache.org)
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to