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 >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>> >>>> >>