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

Andrew Mashenkov commented on IGNITE-8747:
------------------------------------------

I've renamed a ticket as ExpiryPolicy shouldn't be applied on remove operation. 
There is a TCK test on this.

So, first get() operation is responsible to expire entry in 
expire_whenAccessed() test.
I've found, on first entry touch we check TTL related to CreatedExpiryPolicy 
and then update is with AccessExpiryPolicy, but we miss the check if entry 
should be expired instantly due to newly applied AccessExpiryPolicy. This miss 
makes next remove() method report about successful entry deletions. 

Also, this issue was not introduced by IGNITE-8681. It can be easily reproduced 
on master with eagerTtl=false.

> AccessExpiryPolicy should be check on first entry touch.
> --------------------------------------------------------
>
>                 Key: IGNITE-8747
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8747
>             Project: Ignite
>          Issue Type: Improvement
>          Components: cache
>            Reporter: Andrew Mashenkov
>            Assignee: Andrew Mashenkov
>            Priority: Major
>              Labels: MakeTeamcityGreenAgain, tck, test-failure
>
> We have 2 TCK 1.0 test that are passed due to we have eagerTtl=true by 
> default.
> The reason is remove() return true even if an expired entry was removed.
> Seems, we have to evict expired entry from cache on remove(), but do not 
> count it as removed.
> java.lang.AssertionError
>  at 
> org.jsr107.tck.expiry.CacheExpiryTest.expire_whenAccessed(CacheExpiryTest.java:326)
> java.lang.AssertionError: expected:<0> but was:<1> at 
> org.jsr107.tck.expiry.CacheExpiryTest.testCacheStatisticsRemoveAll(CacheExpiryTest.java:160)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to