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