[ 
https://issues.apache.org/jira/browse/IGNITE-15666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17447457#comment-17447457
 ] 

Vyacheslav Koptilin edited comment on IGNITE-15666 at 12/3/21, 12:20 AM:
-------------------------------------------------------------------------

Hello [~NSAmelchev], [~PetrovMikhail],

It seems to me, this fix is arguable and contradicts the specification JCache 
API.
In accordance with specification *12.4. Statistics Effects of Cache Operations* 
the `remove(K key)` method should update statistics _if the method returns 
true._ Yep, it explicitly mentions the "Number of Removals", however, I think 
the average time is assumed as well.
Let's consider the following situation:
 - cache.put(key, value); // removals = 0, averageTime = 0
 - cache.remove(key); // removals = 1, averageTime = 100ms
 - cache.remove(notExistingKey1); // removals = 1, averageTime = 200ms (in your 
pull-request, this metric is always updated)
 - cache.remove(notExistingKey1); // removals = 1, averageTime = 300ms 
(--{-}//{-}--)
In my understanding, this behavior does not seem correct.

Yes, I see that your pull request passed the TCK (as the previous version of 
code as well), however, it speaks about the quality of the TCK itself :)


was (Author: slava.koptilin):
Hell [~NSAmelchev], [~PetrovMikhail],

It seems to me, this fix is arguable and contradicts the specification JCache 
API.
In accordance with specification *12.4. Statistics Effects of Cache Operations* 
the `remove(K key)` method should update statistics _if the method returns 
true._ Yep, it explicitly mentions the "Number of Removals", however, I think 
the average time is assumed as well.
Let's consider the following situation:
 - cache.put(key, value);        // removals = 0, averageTime = 0
 - cache.remove(key);            // removals = 1, averageTime = 100ms
 - cache.remove(notExistingKey1); // removals = 1, averageTime = 200ms (in your 
pull-request, this metric is always updated)
 - cache.remove(notExistingKey1); // removals = 1, averageTime = 300ms 
(---//---) 
In my understanding, this behavior does not seem correct.

Yes, I see that your pull request passed the TCK (as the previous version of 
code as well), however, it speaks about the quality of the TCK itself :)

> The remove metric value is different for sync and async methods
> ---------------------------------------------------------------
>
>                 Key: IGNITE-15666
>                 URL: https://issues.apache.org/jira/browse/IGNITE-15666
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Amelchev Nikita
>            Assignee: Amelchev Nikita
>            Priority: Major
>             Fix For: 2.12
>
>         Attachments: screenshot-1.png
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> The remove metric value is different for sync and async methods.
> The following metrics are updated only if the key was exist for the sync 
> version:
> {noformat}
> RemoveTimeTotal
> RemoveTime
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to