[
https://issues.apache.org/jira/browse/HIVE-8829?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14221412#comment-14221412
]
Sergey Shelukhin commented on HIVE-8829:
----------------------------------------
Hi, I'm getting an error in tests with this on local after full clean build,
even after nuking org.apache.thrift and com.facebook from .m2; it goes away if
I revert this patch. Is there anything else that needs to be done/nuked?
{noformat}
java.lang.UnsupportedClassVersionError:
com/facebook/fb303/FacebookService$Iface : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:249)
at
org.apache.hadoop.hive.metastore.MetaStoreUtils.getClass(MetaStoreUtils.java:1447)
at
org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:70)
at
org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2674)
at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2693)
at
org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:425)
at
org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:386)
at org.apache.hadoop.hive.ql.QTestUtil.init(QTestUtil.java:712)
at org.apache.hadoop.hive.ql.QTestUtil.<init>(QTestUtil.java:364)
at
org.apache.hadoop.hive.cli.TestCliDriver.<clinit>(TestCliDriver.java:44)
{noformat}
> Upgrade to Thrift 0.9.2
> -----------------------
>
> Key: HIVE-8829
> URL: https://issues.apache.org/jira/browse/HIVE-8829
> Project: Hive
> Issue Type: Improvement
> Affects Versions: 0.15.0
> Reporter: Vaibhav Gumashta
> Assignee: Prasad Mujumdar
> Labels: HiveServer2, metastore
> Fix For: 0.15.0
>
> Attachments: HIVE-8829.1.patch, HIVE-8829.1.patch
>
>
> Apache Thrift 0.9.2 was released recently
> (https://thrift.apache.org/download). It has a fix for THRIFT-2660 which can
> cause HS2 (tcp mode) and Metastore processes to go OOM on getting a
> non-thrift request when they use SASL transport. The reason ([thrift
> code|https://github.com/apache/thrift/blob/0.9.x/lib/java/src/org/apache/thrift/transport/TSaslTransport.java#L177]):
> {code}
> protected SaslResponse receiveSaslMessage() throws TTransportException {
> underlyingTransport.readAll(messageHeader, 0, messageHeader.length);
> byte statusByte = messageHeader[0];
> byte[] payload = new byte[EncodingUtils.decodeBigEndian(messageHeader,
> STATUS_BYTES)];
> underlyingTransport.readAll(payload, 0, payload.length);
> NegotiationStatus status = NegotiationStatus.byValue(statusByte);
> if (status == null) {
> sendAndThrowMessage(NegotiationStatus.ERROR, "Invalid status " +
> statusByte);
> } else if (status == NegotiationStatus.BAD || status ==
> NegotiationStatus.ERROR) {
> try {
> String remoteMessage = new String(payload, "UTF-8");
> throw new TTransportException("Peer indicated failure: " +
> remoteMessage);
> } catch (UnsupportedEncodingException e) {
> throw new TTransportException(e);
> }
> }
> {code}
> Basically since there are no message format checks / size checks before
> creating the byte array, on getting a non-SASL message this creates a huge
> byte array from some garbage size.
> For HS2, an attempt was made to fix it here: HIVE-6468, which never went in.
> I think for 0.15.0 it's best to upgarde to Thrift 0.9.2.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)