Nikolay, I've reviewed your changes and I tend to agree with Andrey, it's better to remove deprecation for the old APIs in AI 2.8 and discuss and merge the new facade (IGNITE-12553) in a more calm and structured way. My observations on the changes:
- I am not sure if Iterable would suffice both for the exporter and public APIs. Should we provide a way to know the number of metrics and registries in advance? Let's say I am writing a custom exporter in binary format and I need to write the number of exported metrics in a packet beforehand. - There is no separation on public and internal metrics, when public metrics preserve their name and semantics, and internal metrics may change. I remember we discussed this, but it's not reflected in the APIs in any way. - Will we allow users to register their own metrics? Again I remember we discussed a possibility for this. If so, why the registry is called 'ReadyOnly'? - It's still not clear how a user will map old interfaces and methods to the new metric names. As you can see in the original message, I am not pushing for the new APIs in the nearest release, I just want to remove the deprecations on the classes for which there is no a well-defined replacement. пн, 27 янв. 2020 г. в 15:56, Maxim Muzafarov <mmu...@apache.org>: > Folks, > > > I'm sorry for not being too attentive to the whole thread discussion > and maybe missing some details. > > But... who will perform the review of [1] issue? > Will we merge it to 2.8? (hope so) > > > [1] https://issues.apache.org/jira/browse/IGNITE-12553 > [IEP-35] public Java metric API > > On Sat, 25 Jan 2020 at 11:43, Николай Ижиков <nizhi...@apache.org> wrote: > > > > Andrey. > > > > With this API we are trying to fill the GAP Alexey pointed out at the > start of this discussion. > > I think it worth to be reviewed and merged. > > > > Can we, please, come back to the discussion of the changes itself? > > I think API changes should be discussed in the other thread. > > > > > Why do you think this is a wrong usage pattern? From the top of my > head, here is a few cases of direct metric API usage that I know are > currently being used in production: > > > * A custom task execution scheduling service with load balancing based > on utilization metrics readings from Java code > > > * Cleanup task trigger based on metrics readings > > > * A custom health-check endpoint for an application with an embedded > Ignite node for Kubernetes/Spring Application/etc > > > > [1] https://github.com/apache/ignite/pull/7283 > > > > > 24 янв. 2020 г., в 18:08, Andrey Gura <ag...@apache.org> написал(а): > > > > > >> My point - that your contribution that took a long time, already, > can’t be an argument to postpone creation of the API in the current release. > > > > > > Argument is not about time. But about API which is known will be > changed. > > > Second argument: why we should add this experimental API to the > > > already existing experimental API? Just to making API more > > > experimental? As I told already it is commit for commit and doesn't > > > bring any value but brings some inconvenience to me (e.g. merge > > > problems). > > > > > > BTW, does it exist issue about marking IEP-35 API's as experimental? > > > > > > On Thu, Jan 23, 2020 at 8:33 PM Николай Ижиков <nizhi...@apache.org> > wrote: > > >> > > >>> You want say didn't discuss? > > >> > > >> Yes. > > >> > > >>> Secondly, yes it took a lot of time due to a lot of changes. Is it > problem? > > >> > > >> No, of course. > > >> My point - that your contribution that took a long time, already, > can’t be an argument to postpone creation of the API in the current release. > > >> > > >> > > >>> 23 янв. 2020 г., в 18:11, Andrey Gura <ag...@apache.org> написал(а): > > >>> > > >>>> We don’t discuss your changes and your proposals for the Metric API. > > >>> > > >>> You want say didn't discuss? Actually we did it [1] but you told ok > > >>> let's see code :) > > >>> > > >>>> So I don’t think we can make the existence of some PR is an > argument to introduce(or not introduce) this facade. > > >>> > > >>> You definitely right in case of competition development. But I think > > >>> that collaborative development is more effective. Isn't it? > > >>> > > >>>> Moreover, As far as I know, you developing changes for the Metric > API for 5 months without public discussion, for now. Let's start it. > > >>> > > >>> Firsty, with discussion. See above. > > >>> Secondly, yes it took a lot of time due to a lot of changes. Is it > problem? > > >>> > > >>>> Let’s do the following: > > >>>> 1. Review `IgniteMetric` facade and introduce it to the users as an > experimental API. > > >>> > > >>> It just doesn't make sense. Just commit for commit. > > >>> > > >>>> 2. Discuss your proposal to the Metric API in the separate thread > you are referencing. > > >>> > > >>> You a re welcome to thread [1] again. But please, take into account. > > >>> because discussion is postponed by you it's late enough to discuss > > >>> proposed solution. But of course I'll answer on your questions and > > >>> will be glade to your comments and suggestions. > > >>> > > >>>> I think we should start a discussion from the simplified > explanation of: > > >>>> 1. API intentions - What we want to gain with it? What is our focus? > > >>>> 2. Simple, minimal example of API main interfaces and desired > usages. > > >>> > > >>> All this already described at [1]. You also can take a look on PR > (see > > >>> MetricSource implementations, there are complex and simple ones). > > >>> > > >>> [1] > http://apache-ignite-developers.2346864.n4.nabble.com/IEP-35-Metrics-management-in-Ignite-tp43243.html > > >>> > > >>> On Thu, Jan 23, 2020 at 5:42 PM Николай Ижиков <nizhi...@apache.org> > wrote: > > >>>> > > >>>> Andrey. > > >>>> > > >>>>> IGNITE-11927 implementation so your changes are incompatible with > my changes > > >>>> > > >>>> We don’t discuss your changes and your proposals for the Metric API. > > >>>> So I don’t think we can make the existence of some PR is an > argument to introduce(or not introduce) this facade. > > >>>> Moreover, As far as I know, you developing changes for the Metric > API for 5 months without public discussion, for now. Let's start it. > > >>>> > > >>>> Let’s do the following: > > >>>> > > >>>> 1. Review `IgniteMetric` facade and introduce it to the users as an > experimental API. > > >>>> > > >>>> 2. Discuss your proposal to the Metric API in the separate thread > you are referencing. > > >>>> > > >>>> I think we should start a discussion from the simplified > explanation of: > > >>>> > > >>>> 1. API intentions - What we want to gain with it? What is our focus? > > >>>> 2. Simple, minimal example of API main interfaces and desired > usages. > > >>>> > > >>>> This will help to the community and me personally better understand > your idea and share feedback. > > >>>> > > >>>> Thanks. > > >>>> > > >>>>> 23 янв. 2020 г., в 17:15, Andrey Gura <ag...@apache.org> > написал(а): > > >>>>> > > >>>>> Nikolay, > > >>>>> > > >>>>> as I wrote early in this thread API significantly changed during > > >>>>> IGNITE-11927 implementation so your changes are incompatible with > my > > >>>>> changes. > > >>>>> > > >>>>> ReadOnlyMetricRegistry will be removed at all (still exists in a > > >>>>> couple of places where it uses). > > >>>>> > > >>>>> Also I don't want to introduce IgniteMetric facade in this rush. In > > >>>>> current implementation this interface just provides access to the > > >>>>> ReadOnlyMetricManager instance (which will be removed) but it is > not > > >>>>> enough. > > >>>>> > > >>>>> I agree with Denis. We should mark current API as experimental and > > >>>>> continue IEP-35 development. See my process proposal [1] described > > >>>>> early this thread. We can release Apache Ignite 2.8.1 specially for > > >>>>> this changes. > > >>>>> Public APIs require deeper thinking in order to provide > comprehensive, > > >>>>> consistent and convenient way of metrics management for end users. > > >>>>> > > >>>>> Let's add IgniteExperimental, release 2.8 and finish metrics > related > > >>>>> issues after it. > > >>>>> > > >>>>> [1] > http://apache-ignite-developers.2346864.n4.nabble.com/Internal-classes-are-exposed-in-public-API-tp45146p45185.html > > >>>>> > > >>>>> > > >>>>> On Wed, Jan 22, 2020 at 5:21 PM Николай Ижиков < > nizhi...@apache.org> wrote: > > >>>>>> > > >>>>>> Hello, Igniters. > > >>>>>> > > >>>>>> * IGNITE-12552: Move ReadOnlyMetricRegistry to public API merged > to the master and cherry-picked to the 2.8. > > >>>>>> So the main issue with the Metric API solved. > > >>>>>> > > >>>>>> * I raised the PR [1] to fix second issue with the new Metric > API: absence of the public Java API to get metrics. > > >>>>>> This PR introduces the following changes: > > >>>>>> > > >>>>>> 1. IgniteMetric interface created: it provides Java API to access > Ignite metrics created with the new Metric API. > > >>>>>> > > >>>>>> ``` > > >>>>>> public interface IgniteMetric extends > Iterable<ReadOnlyMetricRegistry> { > > >>>>>> @Nullable ReadOnlyMetricRegistry registry(String name); > > >>>>>> } > > >>>>>> ``` > > >>>>>> > > >>>>>> 2. All deprecation javadocs regarding metrics now reference to > the public IgniteMetric instead of internal GridMetricManager: > > >>>>>> > > >>>>>>> @deprecated Use {@link IgniteMetric} instead. > > >>>>>> > > >>>>>> 3. Tests refactored to use IgniteMetric instead of > GridMetricManager when possible. > > >>>>>> > > >>>>>> Please, review. > > >>>>>> > > >>>>>> [1] https://github.com/apache/ignite/pull/7283 > > >>>>>> > > >>>>>>> 21 янв. 2020 г., в 17:51, Николай Ижиков <nizhikov....@gmail.com> > написал(а): > > >>>>>>> > > >>>>>>> Hello, Igniters. > > >>>>>>> > > >>>>>>> Alexey approved my PR [1] regarding fixing public API for metric > exporters. > > >>>>>>> I’m waiting for a bot visa and merge this PR. > > >>>>>>> > > >>>>>>> As we discussed, the metrics API will be marked with > IgniteExperimental annotation. > > >>>>>>> > > >>>>>>> If anyone has any objection to this plan, please provide your > feedback. > > >>>>>>> > > >>>>>>> [1] https://github.com/apache/ignite/pull/7269 > > >>>>>>> > > >>>>>>>> 21 янв. 2020 г., в 13:45, Николай Ижиков < > nizhikov....@gmail.com> написал(а): > > >>>>>>>> > > >>>>>>>> Thanks, for the review Alexey. > > >>>>>>>> > > >>>>>>>> I will fix your comment and try to implement Monitoring > facade, shortly. > > >>>>>>>> > > >>>>>>>>> 21 янв. 2020 г., в 13:32, Alexey Goncharuk < > alexey.goncha...@gmail.com> написал(а): > > >>>>>>>>> > > >>>>>>>>> Nikolay, > > >>>>>>>>> > > >>>>>>>>> I left a single comment in the PR about the histogram metric. > I think the > > >>>>>>>>> API looks much cleaner now. > > >>>>>>>>> > > >>>>>>>>> I will take care of the @IgniteExperimental annotation. > > >>>>>>>>> > > >>>>>>>>> пн, 20 янв. 2020 г. в 20:55, Николай Ижиков < > nizhi...@apache.org>: > > >>>>>>>>> > > >>>>>>>>>> Alexey. > > >>>>>>>>>> > > >>>>>>>>>> PR [1] is waiting for your review. > > >>>>>>>>>> Please, take a look. > > >>>>>>>>>> > > >>>>>>>>>> I think we should do the following before 2.8 release > > >>>>>>>>>> > > >>>>>>>>>> * Introduce new @IgniteExperimental annotation as discussed. > > >>>>>>>>>> * Mark Monitoring API with it. > > >>>>>>>>>> * merge «[IEP-35] Expose MetricRegistry to the public API» to > 2.8 > > >>>>>>>>>> * merge «[IEP-35] public Java metric API» to 2.8 > > >>>>>>>>>> > > >>>>>>>>>> [1] https://github.com/apache/ignite/pull/7269 > > >>>>>>>>>> > > >>>>>>>>>>> 20 янв. 2020 г., в 17:09, Alexey Goncharuk < > alexey.goncha...@gmail.com> > > >>>>>>>>>> написал(а): > > >>>>>>>>>>> > > >>>>>>>>>>> Nikolay, > > >>>>>>>>>>> > > >>>>>>>>>>> Should we wait for both of the tickets given that we agreed > that we are > > >>>>>>>>>>> putting an experimental marker on the new APIs? I'm ok to > fix only the > > >>>>>>>>>>> first one and add the experimental marker so that we do not > delay 2.8 > > >>>>>>>>>>> release. > > >>>>>>>>>>> > > >>>>>>>>>>> пн, 20 янв. 2020 г. в 13:32, Николай Ижиков < > nizhi...@apache.org>: > > >>>>>>>>>>> > > >>>>>>>>>>>> Andrey. > > >>>>>>>>>>>> > > >>>>>>>>>>>> Let’s move from the long letters to the code. > > >>>>>>>>>>>> If you want to change API - please, propose this changes. > > >>>>>>>>>>>> I think everybody wins if we make our API better. > > >>>>>>>>>>>> > > >>>>>>>>>>>> Please, describe proposed changes. > > >>>>>>>>>>>> It would be great if you have some examples or PR for it. > > >>>>>>>>>>>> > > >>>>>>>>>>>> As for this release, I have plans to contribute tickets > > >>>>>>>>>>>> «[IEP-35] Expose MetricRegistry to the public API» [1] and > > >>>>>>>>>>>> «[IEP-35] public Java metric API» [2] for it. > > >>>>>>>>>>>> > > >>>>>>>>>>>> Any objections on it? > > >>>>>>>>>>>> > > >>>>>>>>>>>> [1] https://github.com/apache/ignite/pull/7269 > > >>>>>>>>>>>> [2] https://issues.apache.org/jira/browse/IGNITE-12553 > > >>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>>>>> 20 янв. 2020 г., в 13:08, Andrey Gura <ag...@apache.org> > написал(а): > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> It solves problem. > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> On Mon, Jan 20, 2020 at 12:09 PM Alexey Goncharuk > > >>>>>>>>>>>>> <alexey.goncha...@gmail.com> wrote: > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> After giving it some thought, I agree with Denis - there > is nothing > > >>>>>>>>>>>> wrong > > >>>>>>>>>>>>>> with exposing the new APIs, we just need to make it clear > that we are > > >>>>>>>>>>>> still > > >>>>>>>>>>>>>> going to change it. > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> Should we Introduce something like @IgniteExperimental > annotation (I > > >>>>>>>>>>>>>> believe it has been discussed a dozen of times on the > dev-list)? > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> пт, 17 янв. 2020 г. в 23:28, Nikolay Izhikov < > nizhi...@apache.org>: > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> +1 to mark feature or whole release as EA. > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> пт, 17 янв. 2020 г., 23:00 Denis Magda < > dma...@apache.org>: > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> Folks, if you don't mind I'll share some > thoughts/suggestions as an > > >>>>>>>>>>>>>>>> observer who was not involved in the feature > development. > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> It's absolutely 'ok' to deprecate an API that is > replaced with a > > >>>>>>>>>> much > > >>>>>>>>>>>>>>>> better version. However, we should do this only when > the new APIs > > >>>>>>>>>> are > > >>>>>>>>>>>>>>>> production-ready. If there are still many limitations > or open items > > >>>>>>>>>>>> then > > >>>>>>>>>>>>>>>> don't deprecate anything that exists and release the > new APIs > > >>>>>>>>>>>> labeling as > > >>>>>>>>>>>>>>>> early access. What if release the improvements labeling > as EA > > >>>>>>>>>> instead > > >>>>>>>>>>>> of > > >>>>>>>>>>>>>>>> hiding them completely? > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> I would also encourage us to put aside emotions, don't > blame or > > >>>>>>>>>> point > > >>>>>>>>>>>>>>>> fingers. This IEP is a great initiative and you both > have already > > >>>>>>>>>>>> done a > > >>>>>>>>>>>>>>>> tremendous job by developing, architecting and > reviewing changes. > > >>>>>>>>>>>> Just be > > >>>>>>>>>>>>>>>> respectful. Nobody is trying to block the feature from > being > > >>>>>>>>>> released. > > >>>>>>>>>>>>>>>> Everyone would be glad to tap into improvements and > start using them > > >>>>>>>>>>>> in > > >>>>>>>>>>>>>>>> prod. But if more time is needed for the GA let's > reiterate a bit. > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> - > > >>>>>>>>>>>>>>>> Denis > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> On Fri, Jan 17, 2020 at 12:24 PM Николай Ижиков < > > >>>>>>>>>> nizhi...@apache.org> > > >>>>>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> Also I agree with Alexey about introducing public > IgniteMonitoring > > >>>>>>>>>>>>>>>> facade > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> This is not an issue with the API. > > >>>>>>>>>>>>>>>>> Just the new feature that doesn’t affects API. > > >>>>>>>>>>>>>>>>> Moreover, I create a ticket to fix it, already. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> It's right. But if you add checking of > statisticsEnabling property > > >>>>>>>>>>>>>>> then > > >>>>>>>>>>>>>>>>> test will fail. It's just not good tests. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> My changes doesn’t affect any `staticticsEnabled` > property. > > >>>>>>>>>>>>>>>>> I don’ understand your point here. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> Redundant ReadOnlyMetricRegistry. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> It’s not redundant. > > >>>>>>>>>>>>>>>>> It required for exporters and provide read only access > to > > >>>>>>>>>>>>>>> MetricRegistry > > >>>>>>>>>>>>>>>>> existing in the node. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> MetricExporterSpi that requires > ReadOnlyMetricRegistry. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> Absence of newly created metrics in old MBeans that > forces user > > >>>>>>>>>> use > > >>>>>>>>>>>>>>>>>> exporter SPI while his code base uses old MBeans. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> Why this is issue? > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> Inconsistent MetricRegistry API. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> It’s consistent. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> Metrics lookups from map instead of using direct > reference > > >>>>>>>>>>>>>>>>>> (performance problem). > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> 1. We(You and I) did this choice together to simplify > creation of > > >>>>>>>>>> the > > >>>>>>>>>>>>>>> new > > >>>>>>>>>>>>>>>>> metrics. > > >>>>>>>>>>>>>>>>> 2. This is not public API issue. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> Ignoring of statisticsEnabled flag. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> I don’t ignore this flag. > > >>>>>>>>>>>>>>>>> It just doesn’t exists in new framework(because of > scope). > > >>>>>>>>>>>>>>>>> I don’t think it’s an issue. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> JmxExporterSpi creates beans that doesn't satisfy > best MBeans > > >>>>>>>>>>>>>>>> practices. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> Please, clarify your statement. > > >>>>>>>>>>>>>>>>> What is best MBeans practices you are talking about? > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> Not finished IGNITE-11927 > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> How this can be API issue? > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> 17 янв. 2020 г., в 20:52, Andrey Gura < > ag...@apache.org> > > >>>>>>>>>>>> написал(а): > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> All issues Alexey mentioned in starting letter are > fixed with my > > >>>>>>>>>>>> PR > > >>>>>>>>>>>>>>>>> [1]. > > >>>>>>>>>>>>>>>>>>>> I don’t think other issues you mentioned are > blocker for the > > >>>>>>>>>>>>>>> release. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> As I mentioned already IGNITE-11927 is part of IEP-35 > and > > >>>>>>>>>>>>>>>>>> implementation seriously affects API's. Also I agree > with Alexey > > >>>>>>>>>>>>>>> about > > >>>>>>>>>>>>>>>>>> introducing public IgniteMonitoring facade. So thiss > PR doesn't > > >>>>>>>>>> fix > > >>>>>>>>>>>>>>>>>> all issues. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> I talk about ignored existing functionality. > > >>>>>>>>>>>>>>>>>>> There is no existing tests that was broken by this > contribution. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> It's right. But if you add checking of > statisticsEnabling property > > >>>>>>>>>>>>>>>>>> then test will fail. It's just not good tests. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> If you know the issues with it, feel free to create > a ticket I > > >>>>>>>>>> will > > >>>>>>>>>>>>>>>> fix > > >>>>>>>>>>>>>>>>> it ASAP. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> I already fix it all in IGNITE-11927 > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> 1. Moving IEP-35 API's to the internal package. > > >>>>>>>>>>>>>>>>>>> We should move the product forward and shouldn't > hide major > > >>>>>>>>>>>>>>>>> contribution from the user just because your second > guess «I don’t > > >>>>>>>>>>>> like > > >>>>>>>>>>>>>>>> the > > >>>>>>>>>>>>>>>>> API I just reviewed and approved». > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> We should move the product forward with with really > finished > > >>>>>>>>>>>>>>> features, > > >>>>>>>>>>>>>>>>>> not pieces of features. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> So I am against this proposal. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> It is not argument. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> But, I’m ready to see your proposal for the API > change and > > >>>>>>>>>> discuss > > >>>>>>>>>>>>>>>> them. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> We can prepare it together. But we can't block > release. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> Because IGNITE-11927 doesn't solve all problems > > >>>>>>>>>>>>>>>>>>> What is *ALL* problems? > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> Redundant ReadOnlyMetricRegistry. > > >>>>>>>>>>>>>>>>>> MetricExporterSpi that requires > ReadOnlyMetricRegistry. > > >>>>>>>>>>>>>>>>>> Absence of newly created metrics in old MBeans that > forces user > > >>>>>>>>>> use > > >>>>>>>>>>>>>>>>>> exporter SPI while his code base uses old MBeans. > > >>>>>>>>>>>>>>>>>> Inconsistent MetricRegistry API. > > >>>>>>>>>>>>>>>>>> Metrics lookups from map instead of using direct > reference > > >>>>>>>>>>>>>>>>>> (performance problem). > > >>>>>>>>>>>>>>>>>> Ignoring of statisticsEnabled flag. > > >>>>>>>>>>>>>>>>>> JmxExporterSpi creates beans that doesn't satisfy > best MBeans > > >>>>>>>>>>>>>>>> practices. > > >>>>>>>>>>>>>>>>>> Not finished IGNITE-11927 > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> It's enough I believe. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> On Fri, Jan 17, 2020 at 7:28 PM Николай Ижиков < > > >>>>>>>>>> nizhi...@apache.org > > >>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> Andrey. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> All issues Alexey mentioned in starting letter are > fixed with my > > >>>>>>>>>> PR > > >>>>>>>>>>>>>>>> [1]. > > >>>>>>>>>>>>>>>>>>> I don’t think other issues you mentioned are blocker > for the > > >>>>>>>>>>>>>>> release. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> I talk about ignored existing functionality. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> There is no existing tests that was broken by this > contribution. > > >>>>>>>>>>>>>>>>>>> If you know the issues with it, feel free to create > a ticket I > > >>>>>>>>>> will > > >>>>>>>>>>>>>>>> fix > > >>>>>>>>>>>>>>>>> it ASAP. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> 1. Moving IEP-35 API's to the internal package. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> We should move the product forward and shouldn't > hide major > > >>>>>>>>>>>>>>>>> contribution from the user just because your second > guess «I don’t > > >>>>>>>>>>>> like > > >>>>>>>>>>>>>>>> the > > >>>>>>>>>>>>>>>>> API I just reviewed and approved». > > >>>>>>>>>>>>>>>>>>> So I am against this proposal. > > >>>>>>>>>>>>>>>>>>> But, I’m ready to see your proposal for the API > change and > > >>>>>>>>>> discuss > > >>>>>>>>>>>>>>>> them. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> Because IGNITE-11927 doesn't solve all problems > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> What is *ALL* problems? > > >>>>>>>>>>>>>>>>>>> Seems, we never be able to solve *ALL* problems. > > >>>>>>>>>>>>>>>>>>> But, we should move the product forward. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> As for your steps [1-6]. > > >>>>>>>>>>>>>>>>>>> I’m always following these steps during my > contribution. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> [1] https://github.com/apache/ignite/pull/7269 > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> 17 янв. 2020 г., в 19:08, Andrey Gura < > ag...@apache.org> > > >>>>>>>>>>>>>>> написал(а): > > >>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> The discussion is hot and can be endless. So in > separate post I > > >>>>>>>>>>>>>>> want > > >>>>>>>>>>>>>>>>>>>> propose my solution. > > >>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> 1. Moving IEP-35 API's to the internal package. > > >>>>>>>>>>>>>>>>>>>> 2. Create special feature branch B. > > >>>>>>>>>>>>>>>>>>>> 3. In branch B will be merged IGNITE-11927 > > >>>>>>>>>>>>>>>>>>>> 4. Because IGNITE-11927 doesn't solve all problems > we should > > >>>>>>>>>>>>>>> propose > > >>>>>>>>>>>>>>>>>>>> solution and implement it in branch B. > > >>>>>>>>>>>>>>>>>>>> 5. Testing, usability testing, fixing, etc > iteratively. > > >>>>>>>>>>>>>>>>>>>> 6. Merge it to master and in new release branch if > needed. > > >>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> Independent step. There are some problem which > should be fixed > > >>>>>>>>>> in > > >>>>>>>>>>>>>>> 2.8 > > >>>>>>>>>>>>>>>>>>>> before release otherwise we introduce problems with > > >>>>>>>>>> compatibility > > >>>>>>>>>>>>>>>>>>>> which will haunt us till next major release. I'll > create > > >>>>>>>>>> tickets. > > >>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> On Fri, Jan 17, 2020 at 7:03 PM Andrey Gura < > ag...@apache.org> > > >>>>>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Because it is brand new API and it requires > rewrite client > > >>>>>>>>>>>> code. > > >>>>>>>>>>>>>>>>>>>>>> We doesn’t break backward compatibility. > > >>>>>>>>>>>>>>>>>>>>>> The message is - this interface would be remove > in the next > > >>>>>>>>>>>> major > > >>>>>>>>>>>>>>>>> release. > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>> We don't know anything about development processes > our users. I > > >>>>>>>>>>>>>>> can > > >>>>>>>>>>>>>>>>>>>>> admit that process could require that deprecated > methods/APIs > > >>>>>>>>>> are > > >>>>>>>>>>>>>>>> not > > >>>>>>>>>>>>>>>>>>>>> allowed for example. > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> ReadOnlyMetricRegistry > > >>>>>>>>>>>>>>>>>>>>>>> Form user stand point it is very strange > interface which > > >>>>>>>>>> don't > > >>>>>>>>>>>>>>>> give > > >>>>>>>>>>>>>>>>> me any information about it’s purpose and > responsibilities. > > >>>>>>>>>>>>>>>>>>>>>>> Seems, I should explain proposed changes [1] > more clear: > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>> I understand this. But I'm not Ignite user, I'm > Ignite > > >>>>>>>>>> developer. > > >>>>>>>>>>>>>>>> The > > >>>>>>>>>>>>>>>>>>>>> key moment in my message *from user stand point*. > From my point > > >>>>>>>>>>>> of > > >>>>>>>>>>>>>>>>>>>>> view it is very not intuitive solution and this > interface is > > >>>>>>>>>>>>>>>>>>>>> redundant. > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Actually not. We have statisticsEnabled for > caches for > > >>>>>>>>>> example. > > >>>>>>>>>>>>>>>>> There are other entities with such flag. > > >>>>>>>>>>>>>>>>>>>>>> They still works as expected. > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>> Actually not. I fixed many such issues during > IGNITE-11927 > > >>>>>>>>>>>>>>>>> implementation. > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Why do you decided do in such way? > > >>>>>>>>>>>>>>>>>>>>>> Because of the scope. > > >>>>>>>>>>>>>>>>>>>>>> The ability to disable/enable metrics is the > matter of the > > >>>>>>>>>> other > > >>>>>>>>>>>>>>>>> ticket. > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>> I talk not about ability. I talk about ignored > existing > > >>>>>>>>>>>>>>>> functionality. > > >>>>>>>>>>>>>>>>>>>>> So scope is not case here. > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> But they should not be exported by > MetricExporterSpi > > >>>>>>>>>>>>>>>>> implementations. > > >>>>>>>>>>>>>>>>>>>>>> Actually, it’s a responsibility of the exporter > to decide. > > >>>>>>>>>>>>>>>>>>>>>> JMX exporter can exports ObjectMetric while > OpenCensus > > >>>>>>>>>> exporter > > >>>>>>>>>>>>>>>>> can’t. > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>> Actually list is not metric at all as I already > told. > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>> On Fri, Jan 17, 2020 at 5:26 PM Николай Ижиков < > > >>>>>>>>>>>>>>> nizhi...@apache.org > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>> Andrey. > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Because it is brand new API and it requires > rewrite client > > >>>>>>>>>>>> code. > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>> We doesn’t break backward compatibility. > > >>>>>>>>>>>>>>>>>>>>>> The message is - this interface would be remove > in the next > > >>>>>>>>>>>> major > > >>>>>>>>>>>>>>>>> release. > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> ReadOnlyMetricRegistry > > >>>>>>>>>>>>>>>>>>>>>>> Form user stand point it is very strange > interface which > > >>>>>>>>>> don't > > >>>>>>>>>>>>>>>> give > > >>>>>>>>>>>>>>>>> me any information about it’s purpose and > responsibilities. > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>> Seems, I should explain proposed changes [1] more > clear: > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>> Each SPI would have a `ReadOnlyMetricManager` > which provides > > >>>>>>>>>>>>>>> access > > >>>>>>>>>>>>>>>>> to collection of `ReadOnlyMetricRegistry` > > >>>>>>>>>>>>>>>>>>>>>> which has a collection of `Metric`. > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>> So we reflects two-level structure we have in the > internal API > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>> GridMetricManager -> Collection[MetricRegistry] -> > > >>>>>>>>>>>>>>>> Collection[Metric] > > >>>>>>>>>>>>>>>>>>>>>> ReadOnlyMetricManager -> > Collection[ReadOnlyMetricRegistry] -> > > >>>>>>>>>>>>>>>>> Collection[Metric] > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Actually not. We have statisticsEnabled for > caches for > > >>>>>>>>>> example. > > >>>>>>>>>>>>>>>>> There are other entities with such flag. > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>> They still works as expected. > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Why do you decided do in such way? > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>> Because of the scope. > > >>>>>>>>>>>>>>>>>>>>>> The ability to disable/enable metrics is the > matter of the > > >>>>>>>>>> other > > >>>>>>>>>>>>>>>>> ticket. > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> But they should not be exported by > MetricExporterSpi > > >>>>>>>>>>>>>>>>> implementations. > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>> Actually, it’s a responsibility of the exporter > to decide. > > >>>>>>>>>>>>>>>>>>>>>> JMX exporter can exports ObjectMetric while > OpenCensus > > >>>>>>>>>> exporter > > >>>>>>>>>>>>>>>>> can’t. > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>> [1] > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>> > https://github.com/apache/ignite/pull/7269/files#diff-0ae5657231fc4c1f650493b02190b81bR25 > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> 17 янв. 2020 г., в 16:57, Andrey Gura < > ag...@apache.org> > > >>>>>>>>>>>>>>>>> написал(а): > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> If I’m not missing something, you were one of > the active > > >>>>>>>>>>>>>>>> reviewers > > >>>>>>>>>>>>>>>>> of the Metric API. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Yes. But if I'm not missing some thing you were > major > > >>>>>>>>>> developer > > >>>>>>>>>>>>>>> of > > >>>>>>>>>>>>>>>>>>>>>>> Metric API :) Shit happens. And it happened. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> The first, I agree with Alexey about > deprecation of APIs > > >>>>>>>>>> that > > >>>>>>>>>>>>>>>> are > > >>>>>>>>>>>>>>>>> still supported and don't offer reasonable > substitution. > > >>>>>>>>>>>>>>>>>>>>>>>> It has - MetricExporterSPI. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> There is such concept - backward compatibility. > I understand > > >>>>>>>>>>>>>>> that > > >>>>>>>>>>>>>>>>>>>>>>> deprecation of some interface doesn't break > backward > > >>>>>>>>>>>>>>> compatibility > > >>>>>>>>>>>>>>>>> but > > >>>>>>>>>>>>>>>>>>>>>>> it leads to question^ what should I use instead > of this. And > > >>>>>>>>>>>>>>>>>>>>>>> MetricExporterSpi is not answer for this > question. Because it > > >>>>>>>>>>>> is > > >>>>>>>>>>>>>>>>> brand > > >>>>>>>>>>>>>>>>>>>>>>> new API and it requires rewrite client code. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> ReadOnlyMetricRegistry interface is redundant. > > >>>>>>>>>>>>>>>>>>>>>>>> It’s an interface that exposes internal > MetricRegistry to > > >>>>>>>>>> the > > >>>>>>>>>>>>>>>>> exporters. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> No it is not. It's completely artificial thing > which allow > > >>>>>>>>>>>>>>> iterate > > >>>>>>>>>>>>>>>>> via > > >>>>>>>>>>>>>>>>>>>>>>> all metric registries. GridMetricManager > implements this > > >>>>>>>>>>>>>>> interface > > >>>>>>>>>>>>>>>>>>>>>>> while it is not metric registry. Form user stand > point it is > > >>>>>>>>>>>>>>> very > > >>>>>>>>>>>>>>>>>>>>>>> strange interface which don't give me any > information about > > >>>>>>>>>>>> it's > > >>>>>>>>>>>>>>>>>>>>>>> purpose and responsibilities. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> Exporters expose metrics if they are disabled. > > >>>>>>>>>>>>>>>>>>>>>>>> We don’t have an ability to disable metrics. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Actually not. We have statisticsEnabled for > caches for > > >>>>>>>>>> example. > > >>>>>>>>>>>>>>>>> There > > >>>>>>>>>>>>>>>>>>>>>>> are other entities with such flag. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> And that done, intentionally. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Why do you decided do in such way? Why you > ignore existing > > >>>>>>>>>>>>>>>>>>>>>>> functionality? It affects user expectations and > experience. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> You are working on this issue, aren’t you? > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Yes? I'm working. Unfortunately we are not > synchronized in > > >>>>>>>>>> this > > >>>>>>>>>>>>>>>>>>>>>>> context and I should redo all metrics related > changes in > > >>>>>>>>>> order > > >>>>>>>>>>>>>>> to > > >>>>>>>>>>>>>>>>>>>>>>> merge it with my changes. Anyway, my change > doesn't solve all > > >>>>>>>>>>>>>>>>> problems > > >>>>>>>>>>>>>>>>>>>>>>> (e.g. it doesn't introduce IgniteMonitoring > facade). > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> I can fix this issue, by myself. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Unfortunately it will be just fix. In my > solution it is > > >>>>>>>>>>>>>>> redesign. > > >>>>>>>>>>>>>>>>> Stop > > >>>>>>>>>>>>>>>>>>>>>>> fixing issues, let's do things. It requires > deeper changes. > > >>>>>>>>>> My > > >>>>>>>>>>>>>>>>> changes > > >>>>>>>>>>>>>>>>>>>>>>> blocks AI 2.8 release because it big enough. So > it retargeted > > >>>>>>>>>>>> on > > >>>>>>>>>>>>>>>> the > > >>>>>>>>>>>>>>>>>>>>>>> next release. And it is one more reason for > moving the > > >>>>>>>>>> changes > > >>>>>>>>>>>>>>> to > > >>>>>>>>>>>>>>>>> the > > >>>>>>>>>>>>>>>>>>>>>>> internal packages. And it isn't good news for me > because I > > >>>>>>>>>> will > > >>>>>>>>>>>>>>> go > > >>>>>>>>>>>>>>>>>>>>>>> throughout pan and tiers of merge. But it is > right. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> Metrics of type lists are not metric at all. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> They are created to deal with backward > compatibility. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> Metrics of type lists are not metric at all. > > >>>>>>>>>>>>>>>>>>>>>>>> They are created to deal with backward > compatibility. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> Yes, I know. But they should not be exported by > > >>>>>>>>>>>>>>> MetricExporterSpi > > >>>>>>>>>>>>>>>>>>>>>>> implementations. > > >>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>> On Fri, Jan 17, 2020 at 3:37 PM Николай Ижиков < > > >>>>>>>>>>>>>>>> nizhi...@apache.org> > > >>>>>>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> Andrey, thanks for your opinion and your ownest > critisism. > > >>>>>>>>>>>>>>>>>>>>>>>> I can’t wait for your contribution. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> If I’m not missing something, you were one of > the active > > >>>>>>>>>>>>>>>> reviewers > > >>>>>>>>>>>>>>>>> of the Metric API. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> The first, I agree with Alexey about > deprecation of APIs > > >>>>>>>>>> that > > >>>>>>>>>>>>>>>> are > > >>>>>>>>>>>>>>>>> still supported and don't offer reasonable > substitution. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> It has - MetricExporterSPI. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> The second, from my point of view, we can't > recommend > > >>>>>>>>>>>>>>>>> MetricExporterSpi's because it are still > not-production ready. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> It’s ready. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> The third, moving of MetricRegistry to the > public API > > >>>>>>>>>> doesn't > > >>>>>>>>>>>>>>>>> solve the problem because this interface exposes > internal Metric > > >>>>>>>>>>>>>>>> interface > > >>>>>>>>>>>>>>>>> implementations. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> Not, its’ not. > > >>>>>>>>>>>>>>>>>>>>>>>> Please, see > `org.apache.ignite.spi.metric.LongMetric` and > > >>>>>>>>>>>> other > > >>>>>>>>>>>>>>>>> public interface. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> API of MetricRegistry is inconsistent. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> MetricRegistry is the internal API. > > >>>>>>>>>>>>>>>>>>>>>>>> Feel free to create ticket for an issues with > it and I will > > >>>>>>>>>>>> try > > >>>>>>>>>>>>>>>> to > > >>>>>>>>>>>>>>>>> fix it. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> ReadOnlyMetricRegistry interface is redundant. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> It’s an interface that exposes internal > MetricRegistry to > > >>>>>>>>>> the > > >>>>>>>>>>>>>>>>> exporters. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> Exporters expose metrics if they are disabled. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> We don’t have an ability to disable metrics. > > >>>>>>>>>>>>>>>>>>>>>>>> And that done, intentionally. > > >>>>>>>>>>>>>>>>>>>>>>>> You are working on this issue, aren’t you? > > >>>>>>>>>>>>>>>>>>>>>>>> I can fix this issue, by myself. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> Metrics of type lists are not metric at all. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> They are created to deal with backward > compatibility. > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> 17 янв. 2020 г., в 15:09, Andrey Gura < > ag...@apache.org> > > >>>>>>>>>>>>>>>>> написал(а): > > >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> Hi, > > >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> The first, I agree with Alexey about > deprecation of APIs > > >>>>>>>>>> that > > >>>>>>>>>>>>>>>> are > > >>>>>>>>>>>>>>>>>>>>>>>>> still supported and don't offer reasonable > substitution. > > >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> The second, from my point of view, we can't > recommend > > >>>>>>>>>>>>>>>>>>>>>>>>> MetricExporterSpi's because it are still > not-production > > >>>>>>>>>>>> ready. > > >>>>>>>>>>>>>>>>> There > > >>>>>>>>>>>>>>>>>>>>>>>>> are some issues with it and usage of > ReadOnlyMetricRegistry > > >>>>>>>>>>>>>>>>> interface > > >>>>>>>>>>>>>>>>>>>>>>>>> just one of them. > > >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> The third, moving of MetricRegistry to the > public API > > >>>>>>>>>> doesn't > > >>>>>>>>>>>>>>>>> solve > > >>>>>>>>>>>>>>>>>>>>>>>>> the problem because this interface exposes > internal Metric > > >>>>>>>>>>>>>>>>> interface > > >>>>>>>>>>>>>>>>>>>>>>>>> implementations. So your PR is incomplete. > > >>>>>>>>>>>>>>>>>>>>>>>>> Moreover, API of MetricRegistry is > inconsistent. E.g. > > >>>>>>>>>>>>>>>>> register(name, > > >>>>>>>>>>>>>>>>>>>>>>>>> supplier, desc) method returns registered > metric for some > > >>>>>>>>>>>>>>> types > > >>>>>>>>>>>>>>>>> and > > >>>>>>>>>>>>>>>>>>>>>>>>> doesn't for other. register(metric) method is > inconsistent > > >>>>>>>>>> in > > >>>>>>>>>>>>>>>>> sense of > > >>>>>>>>>>>>>>>>>>>>>>>>> metric naming. ReadOnlyMetricRegistry > interface is > > >>>>>>>>>> redundant. > > >>>>>>>>>>>>>>>>>>>>>>>>> MetricExporterSpi should be revised because it > absolutely > > >>>>>>>>>> not > > >>>>>>>>>>>>>>>>>>>>>>>>> intuitive because it requires > ReadOnlyMetricRegistry and > > >>>>>>>>>> it's > > >>>>>>>>>>>>>>>>> purpose > > >>>>>>>>>>>>>>>>>>>>>>>>> is undefined. > > >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> One more point. IEP-35 is still not fully > implemented. Some > > >>>>>>>>>>>>>>>>> things are > > >>>>>>>>>>>>>>>>>>>>>>>>> not taken into account. Exporters expose > metrics if they > > >>>>>>>>>> are > > >>>>>>>>>>>>>>>>> disabled. > > >>>>>>>>>>>>>>>>>>>>>>>>> JMX beans exposes values that don't confirm to > best > > >>>>>>>>>> practices > > >>>>>>>>>>>>>>>> [1]. > > >>>>>>>>>>>>>>>>>>>>>>>>> Metrics of type lists are not metric at all. > Ubiquitous > > >>>>>>>>>>>> merics > > >>>>>>>>>>>>>>>>> lookup > > >>>>>>>>>>>>>>>>>>>>>>>>> from hash map instead of usage reference for > getting > > >>>>>>>>>> metrics > > >>>>>>>>>>>>>>>>> values > > >>>>>>>>>>>>>>>>>>>>>>>>> (it is just performance issue). Also > IGNITE-11927 is not > > >>>>>>>>>>>>>>>>> implemented > > >>>>>>>>>>>>>>>>>>>>>>>>> which also changes interfaces significantly. > > >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> Let's just admit that the implementation is > immature and > > >>>>>>>>>> must > > >>>>>>>>>>>>>>> be > > >>>>>>>>>>>>>>>>> moved > > >>>>>>>>>>>>>>>>>>>>>>>>> to the internal packages. > > >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> And because we already merged partially > implemented IEP to > > >>>>>>>>>>>> the > > >>>>>>>>>>>>>>>>> master > > >>>>>>>>>>>>>>>>>>>>>>>>> branch we *must move all currently public APIs > to the > > >>>>>>>>>>>> internal > > >>>>>>>>>>>>>>>>> API* > > >>>>>>>>>>>>>>>>>>>>>>>>> while it will not be ready for publication. > > >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> And the last but not least. What is happening > indicates a > > >>>>>>>>>>>>>>>> immature > > >>>>>>>>>>>>>>>>>>>>>>>>> development process which must be revised. I > don't want > > >>>>>>>>>>>>>>> discuss > > >>>>>>>>>>>>>>>>> it in > > >>>>>>>>>>>>>>>>>>>>>>>>> this thread but we must not allow merge of > change to the > > >>>>>>>>>>>>>>> master > > >>>>>>>>>>>>>>>>> branch > > >>>>>>>>>>>>>>>>>>>>>>>>> before it will completed, that is we must use > feature > > >>>>>>>>>>>> branches > > >>>>>>>>>>>>>>>> for > > >>>>>>>>>>>>>>>>>>>>>>>>> full IEP not only for particular tickets. And > also we > > >>>>>>>>>> should > > >>>>>>>>>>>>>>>>>>>>>>>>> reformulate IEP process in order to avoid > things like this. > > >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> [1] > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>> > https://www.oracle.com/technetwork/java/javase/tech/best-practices-jsp-136021.html > > >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>> On Fri, Jan 17, 2020 at 12:49 PM Николай > Ижиков < > > >>>>>>>>>>>>>>>>> nizhi...@apache.org> wrote: > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>>> Alex. > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>>> OK, I may leverage your experience and create > pure Java > > >>>>>>>>>> API. > > >>>>>>>>>>>>>>>>>>>>>>>>>> Ticket [1] created. > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>>> But, personally, I don’t agree with you. > > >>>>>>>>>>>>>>>>>>>>>>>>>> Ignite has dozens of the API that > theoretically have a > > >>>>>>>>>> usage > > >>>>>>>>>>>>>>>>> scenario, but in real-world have 0 custom > implementation and > > >>>>>>>>>> usages. > > >>>>>>>>>>>>>>>>>>>>>>>>>> Moreover, many APIs that were created with > the intentions > > >>>>>>>>>>>> you > > >>>>>>>>>>>>>>>>> mentioned is abandoned now and confuses users. > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>>> You can just see count of the tests we just > mute on the > > >>>>>>>>>> TC. > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>>> Can you, please, take a look at the fix > regarding puck API > > >>>>>>>>>>>>>>>> issue > > >>>>>>>>>>>>>>>>> you mentioned in your first letter [2], [3] > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>>> [1] > https://issues.apache.org/jira/browse/IGNITE-12553 > > >>>>>>>>>>>>>>>>>>>>>>>>>> [2] > https://github.com/apache/ignite/pull/7269 > > >>>>>>>>>>>>>>>>>>>>>>>>>> [3] > https://issues.apache.org/jira/browse/IGNITE-12552 > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>>>> 17 янв. 2020 г., в 12:12, Alexey Goncharuk < > > >>>>>>>>>>>>>>>>> alexey.goncha...@gmail.com> написал(а): > > >>>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>>>> Nikolay, > > >>>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>>>>> Why do you think this is a wrong usage > pattern? From the > > >>>>>>>>>>>> top > > >>>>>>>>>>>>>>>> of > > >>>>>>>>>>>>>>>>> my head, > > >>>>>>>>>>>>>>>>>>>>>>>>>>> here is a few cases of direct metric API > usage that I > > >>>>>>>>>> know > > >>>>>>>>>>>>>>> are > > >>>>>>>>>>>>>>>>> currently > > >>>>>>>>>>>>>>>>>>>>>>>>>>> being used in production: > > >>>>>>>>>>>>>>>>>>>>>>>>>>> * A custom task execution scheduling service > with load > > >>>>>>>>>>>>>>>>> balancing based on > > >>>>>>>>>>>>>>>>>>>>>>>>>>> utilization metrics readings from Java code > > >>>>>>>>>>>>>>>>>>>>>>>>>>> * Cleanup task trigger based on metrics > readings > > >>>>>>>>>>>>>>>>>>>>>>>>>>> * A custom health-check endpoint for an > application with > > >>>>>>>>>> an > > >>>>>>>>>>>>>>>>> embedded > > >>>>>>>>>>>>>>>>>>>>>>>>>>> Ignite node for Kubernetes/Spring > Application/etc > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>> > > >>>>>>> > > >>>>>> > > >>>> > > >>>> > > >> > > >