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 6CE0C200D2E for ; Tue, 31 Oct 2017 16:17:04 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 6B6001609EC; Tue, 31 Oct 2017 15:17:04 +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 B2A941609EB for ; Tue, 31 Oct 2017 16:17:03 +0100 (CET) Received: (qmail 47154 invoked by uid 500); 31 Oct 2017 15:17:02 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 47142 invoked by uid 99); 31 Oct 2017 15:17:02 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 31 Oct 2017 15:17:02 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 1AB9BD1E73 for ; Tue, 31 Oct 2017 15:17:02 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -97.89 X-Spam-Level: X-Spam-Status: No, score=-97.89 tagged_above=-999 required=6.31 tests=[GAPPY_SUBJECT=1.312, KAM_ASCII_DIVIDERS=0.8, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, USER_IN_WHITELIST=-100] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id W2I1rJRX9kvJ for ; Tue, 31 Oct 2017 15:17: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 2203761119 for ; Tue, 31 Oct 2017 15:17: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 886F4E0594 for ; Tue, 31 Oct 2017 15:17: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 46356212F7 for ; Tue, 31 Oct 2017 15:17:00 +0000 (UTC) Date: Tue, 31 Oct 2017 15:17:00 +0000 (UTC) From: "Appy (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HBASE-19114) Split out o.a.h.h.zookeeper from hbase-server and hbase-client MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Tue, 31 Oct 2017 15:17:04 -0000 [ https://issues.apache.org/jira/browse/HBASE-19114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16226965#comment-16226965 ] Appy commented on HBASE-19114: ------------------------------ bq. ... most zk related code will be in hbase-server... That's what we are trying to move away from- everything in hbase-server. It has 60% of our codebase - and that too in a very tangled and bad state. Since packages don't impose circular dependency violations, everything within a single module can depend on everything else. And that has lead this nasty situation. (https://docs.google.com/document/d/1wZAimGcJzc0jys0-EATRi0CyGMVlcIxTvZtegPF4mfw/edit) Those dashed edges are backward dependency and so many of them is a clear signal that we need to design and place our code more appropriately, like in recent times with separate hbase-backup module, hbase-replication module. bq. We already have too many modules... I don't know if 10 is too many, or 20, or 30. 100 definitely seems too many. 2 seems too low. Is there a metrics on which we can judge that? Because am gunning towards straightening our dependencies graph further by splitting out hbase-io and hbase-wal. Advantages are mentioned in that doc mentioned above. I guess the high level thing here is, anything thats directly zookeeper dependent and doesn't require our internals can be easily split out and kept separately from our internals. > Split out o.a.h.h.zookeeper from hbase-server and hbase-client > -------------------------------------------------------------- > > Key: HBASE-19114 > URL: https://issues.apache.org/jira/browse/HBASE-19114 > Project: HBase > Issue Type: Sub-task > Reporter: Appy > Assignee: Appy > Attachments: HBASE-19114.master.001.patch, HBASE-19114.master.002.patch, HBASE-19114.master.003.patch > > > Changes so far: > - Moved DrainingServerTracker and RegionServerTracker to hbase-server:o.a.h.h.master. > - Move Abortable to hbase-common. Since it's IA.Private and independent of anything, moving it to hbase-common which is at bottom of the dependency tree is better. > - Moved RecoveringRegionWatcher to hbase-server:o.a.h.h.regionserver > - Moved SplitOrMergeTracker to oahh.master (because it depends on a PB) > - Moving hbase-client:oahh.zookeeper.* to hbase-zookeeper module. We want to keep hbase-zookeeper very independent and hence at lowest levels in our dependency tree. > - ZKUtil is a huge tangle since it's linked to almost everything in \[hbase-client/]oahh.zookeeper. And pulling it down requires some basic proto functions (mergeFrom, PBmagic, etc). So what i did was: > ** Pulled down common and basic protobuf functions (which only depend on com.google.protobuf.\*) to hbase-common so other code depending on them can be pulled down if possible/wanted in future. This will help future dependency untangling too. These are ProtobufMagic and ProtobufHelpers. > ** Didn't move any hbase-specific PB stuff to hbase-common. We can't pull things into hbase-common which add dependency between it and hbase-protobuf/hbase-shaded-protobuf since we very recently untangled them. > - DEFAULT_REPLICA_ID is used in many places in ZK. Declared a new constant in HConstants (since it's in hbase-common) and using it in hbase-zookeeper. RegionInfo.DEFAULT_REPLICA_ID also takes its value from it to avoid case where two values can become different. -- This message was sent by Atlassian JIRA (v6.4.14#64029)