> Let’s move from the long letters to the code. Let's thinking before coding. Development is not only coding. Why such a rush? Measure thrice and cut once.
"Long letters" is way of discussion before writing code. And it's ok. On Mon, Jan 20, 2020 at 1:32 PM Николай Ижиков <nizhi...@apache.org> wrote: > > 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 > >>>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>> > >>>>>>> > >>>>> > >>>>> > >>>> > >>> >