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