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