That's unfortunate, but needs must, IMHO. A potential benefit of also marking the impls LP(COPROC) is this captures any implicit dependency on semantics and functionality of the implementation classes not directly exposed in the hbase-metrics-api facade.
So, let's do both? (Facade improvement, raise to LP the impl classes) On Thu, Jun 11, 2020 at 12:00 PM Geoffrey Jacoby <gjac...@apache.org> wrote: > Couple points: > > 1. I like Andrew's proposed solution, and we should do it, but I'm not sure > it's sufficient for Rushabh's purposes because of semver rules. Phoenix > supports HBase 1.3 -1.5 (soon to add 1.6) and HBase 2.0 (soon to gain 2.1 > and 2.2, with 2.3 coming shortly after its release here.) If we add the new > sizeHistogram and timeHistogram methods to hbase-metrics, they'll be > available in Phoenix only in HBase 1.7 and 2.4. (since 2.3 is > mostly-frozen) > > Since Phoenix will be supporting earlier versions of both HBase branches > for a good while, there will need to be a compatibility shim. And the > older-version instance of the shim will probably need to access the classes > directly. (Please correct me if I'm wrong, Rushabh or Andrew.) So it still > might need a LimitedPrivate IA. > > 2. I agree with Nick that it's better to use LimitedPrivate.COPROC rather > than LimitedPrivate.PHOENIX. > > Geoffrey > > > > On Thu, Jun 11, 2020 at 11:28 AM Josh Elser <els...@apache.org> wrote: > > > Sounds reasonable to me! > > > > On 6/11/20 1:06 PM, Andrew Purtell wrote: > > > hbase-metrics-api is available for coprocessors already and interfaces > > > within are already LimitedPrivate(COPROC). However, that package is > > mostly > > > interface and seems geared toward consuming metrics instantiated and > > > registered via private stuff. Or, rather, I didn't see how Phoenix > could > > choose > > > which of MutableSizeHistogram and MutableTimeHistogram to instantiate > > using > > > those interfaces, there is only Histogram > MetricRegistry#histogram(String > > > name). So I think it is also worth some time to review the utility of > > > hbase-metrics-api and decide if more need be done there. Would the > > addition > > > of > > > > > > Histogram MetricRegistry#sizeHistogram(String name) > > > Histogram MetricRegistry#timeHistogram(String name) > > > > > > achieve the desired objective instead? > > > > > > > > > On Thu, Jun 11, 2020 at 9:16 AM Nick Dimiduk <ndimi...@apache.org> > > wrote: > > > > > >> I was just about to reply with the same -- Josh is faster :) +1 on > > >> considering the full surface area of the APIs being exposed. > > >> > > >> I also wonder if exposing the metrics infrastructure is something of > > >> interest more broadly than Phoenix. Seems like any coprocessor might > > want > > >> to provide or monitor some metric value. > > >> > > >> On Thu, Jun 11, 2020 at 9:08 AM Josh Elser <els...@apache.org> wrote: > > >> > > >>> My only concern is that you can't just mark these two classes a > > >>> LimitedPrivate for Phoenix -- you would also have to mark > > >>> MutableRangeHistogram, MutableHistogram (and the rest of the class > > >>> hierarchy) to make sure that we don't make it super confusing as to > > what > > >>> comes from LimitedPrivate classes and what is coming from Private > > >> classes. > > >>> > > >>> Would it be better to just say: make > > >>> ./hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib > > >>> LimitedPrivate? > > >>> > > >>> Do you also need the stuff in > > >>> hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase to push > > >>> metrics back through the HBase metrics subsystem? > > >>> > > >>> Sorry for the late reply. Just want to make sure we open up the > > >>> audience, we open it sufficiently. > > >>> > > >>> On 6/8/20 1:15 PM, Rushabh Shah wrote: > > >>>> Hi, > > >>>> Currently the IA for MutableSizeHistogram and MutableTimeHistogram > is > > >>>> private. We want to use these classes in PHOENIX project and I > thought > > >> we > > >>>> can leverage the existing implementation from hbase histo > > >> implementation. > > >>>> IIUC the private IA can't be used in other projects. Proposing to > make > > >> it > > >>>> LimitedPrivate and mark HBaseInterfaceAudience.PHOENIX. Please > > suggest. > > >>>> Related jira: https://issues.apache.org/jira/browse/HBASE-24520 > > >>>> > > >>> > > >> > > > > > > > > > -- Best regards, Andrew Words like orphans lost among the crosstalk, meaning torn from truth's decrepit hands - A23, Crosstalk