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