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

Reply via email to