From dev-return-55657-archive-asf-public=cust-asf.ponee.io@thrift.apache.org Mon Feb 18 19:38:05 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id DC45C180647 for ; Mon, 18 Feb 2019 20:38:04 +0100 (CET) Received: (qmail 90613 invoked by uid 500); 18 Feb 2019 19:38:04 -0000 Mailing-List: contact dev-help@thrift.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@thrift.apache.org Delivered-To: mailing list dev@thrift.apache.org Received: (qmail 90602 invoked by uid 99); 18 Feb 2019 19:38:03 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Feb 2019 19:38:03 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 822341862BB for ; Mon, 18 Feb 2019 19:38:03 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -109.801 X-Spam-Level: X-Spam-Status: No, score=-109.801 tagged_above=-999 required=6.31 tests=[ENV_AND_HDR_SPF_MATCH=-0.5, KAM_NUMSUBJECT=0.5, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, USER_IN_DEF_SPF_WL=-7.5, USER_IN_WHITELIST=-100] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id HQ2mZ7IGlSyk for ; Mon, 18 Feb 2019 19:38:01 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id 3470A61069 for ; Mon, 18 Feb 2019 19:38:01 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 897AAE27DD for ; Mon, 18 Feb 2019 19:38:00 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 1EDA224508 for ; Mon, 18 Feb 2019 19:38:00 +0000 (UTC) Date: Mon, 18 Feb 2019 19:38:00 +0000 (UTC) From: "James E. King III (JIRA)" To: dev@thrift.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (THRIFT-4805) Fix logic of THRIFT-3769 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/THRIFT-4805?page=3Dcom.atlassia= n.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=3D167= 71327#comment-16771327 ]=20 James E. King III commented on THRIFT-4805: ------------------------------------------- Please submit a pull request instead of a patch file. > Fix logic of THRIFT-3769 > ------------------------ > > Key: THRIFT-4805 > URL: https://issues.apache.org/jira/browse/THRIFT-4805 > Project: Thrift > Issue Type: Bug > Components: Java - Library > Affects Versions: 0.12.0 > Reporter: Mithun Radhakrishnan > Assignee: Mithun Radhakrishnan > Priority: Major > Attachments: THRIFT-4805.1.patch, THRIFT-4805.bonus.patch > > > This has to do with the fix checked in for THRIFT-3769 and THRIFT-2268, w= hich was to mute the noise from=C2=A0\{{TSaslTransportException}}s raised f= rom load-balancer health-checks for Thrift services, such as the Hive metas= tore. Please consider [the code in TThreadPoolServer::run()|https://github.= com/apache/thrift/blob/master/lib/java/src/org/apache/thrift/server/TThread= PoolServer.java#L322]: > {code:java|title=3DTThreadPoolServer.java} > } catch (TException tx) { > LOGGER.error("Thrift error occurred during processing of message.= ", tx); > } catch (Exception x) { > // We'll usually receive RuntimeException types here > // Need to unwrap to ascertain real causing exception before we c= hoose to ignore > Throwable realCause =3D x.getCause(); > // Ignore err-logging all transport-level/type exceptions > if ((realCause !=3D null && realCause instanceof TTransportExcept= ion) > || (x instanceof TTransportException)) { > LOGGER.debug( > "Received TTransportException during processing of message.= Ignoring.", > x); > } else { > // Log the exception at error level and continue > LOGGER.error("Error occurred during processing of message.", x)= ; > } > } finally {...} > {code} > The logic here is solid for {{RuntimeExceptions}} that wrap {{TTansportEx= ceptions}}. But it slips up on handling the condition being checked for at = [line#323|https://github.com/apache/thrift/blob/master/lib/java/src/org/apa= che/thrift/server/TThreadPoolServer.java#L323], i.e.: > {code:java|title=3DTThreadPoolServer.java} > || (x instanceof TTransportException)) { > {code} > The {{catch (Exception x)}} comes *after* the {{catch (TException tx)}}, = so it's a guarantee that {{!(x instanceof TTransportException)}}. When a {{= TTransportException}} (or {{TSaslTransportException}}) is thrown, it will b= e caught in the first catch block, and logged. This rather defeats the purp= ose of the fix. The error manifests with the following stack-trace filling = up my logs: > {noformat} > org.apache.thrift.transport.TTransportException > at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamT= ransport.java:132) > at org.apache.thrift.transport.TTransport.readAll(TTransport.java= :86) > at org.apache.thrift.transport.TSaslTransport.readLength(TSaslTra= nsport.java:374) > at org.apache.thrift.transport.TSaslTransport.readFrame(TSaslTran= sport.java:451) > at org.apache.thrift.transport.TSaslTransport.read(TSaslTransport= .java:433) > at org.apache.thrift.transport.TSaslServerTransport.read(TSaslSer= verTransport.java:43) > at org.apache.thrift.transport.TTransport.readAll(TTransport.java= :86) > at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProt= ocol.java:425) > at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProt= ocol.java:321) > at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TB= inaryProtocol.java:225) > at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:2= 7) > at org.apache.hive.service.cli.thrift.ThriftCLIMetricsProcessor.p= rocess(ThriftCLIMetricsProcessor.java:63) > at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TU= GIAssumingProcessor$2.run(HadoopThriftAuthBridge.java:777) > at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TU= GIAssumingProcessor$2.run(HadoopThriftAuthBridge.java:773) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:422) > at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroup= Information.java:1953) > at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TU= GIAssumingProcessor.process(HadoopThriftAuthBridge.java:773) > at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(T= ThreadPoolServer.java:310) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolEx= ecutor.java:1142) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolE= xecutor.java:617) > at java.lang.Thread.run(Thread.java:748) > {noformat} > The fix is simple. I'll upload it shortly, for review. -- This message was sent by Atlassian JIRA (v7.6.3#76005)