Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 76763200BC9 for ; Sat, 12 Nov 2016 00:16:17 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 75061160B01; Fri, 11 Nov 2016 23:16:17 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id BEC61160AF6 for ; Sat, 12 Nov 2016 00:16:16 +0100 (CET) Received: (qmail 79123 invoked by uid 500); 11 Nov 2016 23:16:15 -0000 Mailing-List: contact dev-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list dev@hbase.apache.org Received: (qmail 79111 invoked by uid 99); 11 Nov 2016 23:16:15 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 11 Nov 2016 23:16:15 +0000 Received: from mail-vk0-f52.google.com (mail-vk0-f52.google.com [209.85.213.52]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id 6DD2C1A026E for ; Fri, 11 Nov 2016 23:16:15 +0000 (UTC) Received: by mail-vk0-f52.google.com with SMTP id w194so25102884vkw.2 for ; Fri, 11 Nov 2016 15:16:15 -0800 (PST) X-Gm-Message-State: ABUngvepReIAeDjOlMljRg6u8wAIJ1dv2hCEcIjAhoxpSkCC6s9S0RYMSbYw7hDrT8BVv4EcOITOfFAR5RVMOQ== X-Received: by 10.31.47.148 with SMTP id v142mr3597787vkv.4.1478906174516; Fri, 11 Nov 2016 15:16:14 -0800 (PST) MIME-Version: 1.0 Received: by 10.103.17.130 with HTTP; Fri, 11 Nov 2016 15:15:54 -0800 (PST) From: =?UTF-8?Q?Enis_S=C3=B6ztutar?= Date: Fri, 11 Nov 2016 15:15:54 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Coprocessor metrics To: "dev@hbase.apache.org" , "dev@phoenix.apache.org" Content-Type: multipart/alternative; boundary=001a1143e08e30386a05410ead2c archived-at: Fri, 11 Nov 2016 23:16:17 -0000 --001a1143e08e30386a05410ead2c Content-Type: text/plain; charset=UTF-8 HBase / Phoenix devs, I would like to solicit early feedback on the design approach that we would pursue for exposing coprocessor metrics. It has implications for our compatibility, so lets try to have some consensus. Added Phoenix devs as well since this will affect how coprocessors can emit metrics via region server metrics bus. The issue is HBASE-9774 [1]. We have a couple of options: (1) Expose Hadoop Metrics2 + HBase internal classes (like BaseSourceImpl, MutableFastCounter, FastLongHistogram, etc). This option is the least amount of work in terms of defining the API. We would mark the important classes with LimitedPrivate(Coprocessor) and have the coprocessors each write their metrics source classes separately. The disadvantage would be that some of the internal APIs are now public and has to be evolved with regards to coprocessor API compatibility. Also it will make it so that breaking coprocessors are now easier across minor releases. (2) Build a Metrics subset API in HBase to abstract away HBase metrics classes and Hadoop2 metrics classes and expose this API only. The API will probably be limited and will be a small subset. HBase internals do not need to be changed that much, but the API has to be kept LimitedPrivate(Coprocessor) with the compatibility implications. (3) Expose (a limited subset of) third-party API to the coprocessors (like Yammer metrics) and never expose internal HBase / Hadoop implementation. Build a translation layer between the yammer metrics and our Hadoop metrics 2 implementation so that things will still work. If we end up changing the implementation, existing coprocessors will not be affected. The downside is that whatever API that we agree to expose becomes our compatibility point. We cannot change that dependency version unless it is acceptable via our compatibility guidelines. Personally, I would like to pursue option (3) especially with Yammer metrics since we do not have to build yet another API endpoint. Hadoop's metrics API is not the best and we do not know whether we will end up changing that dependency. What do you guys think? [1] https://issues.apache.org/jira/browse/HBASE-9774 --001a1143e08e30386a05410ead2c--