Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.6
-
None
-
None
Description
There is a bug in current implementation of GridCacheTtlManager#CleanupWorker.
Refer to the implementation's code snippet and the details below.
EntryWrapper first = pendingEntries.firstx(); if (first != null) { long waitTime = first.expireTime - U.currentTimeMillis(); if (waitTime > 0) U.sleep(waitTime); }
1. Put first item with TTL = 1 hour. CleanupWorker will go to sleep for 1 hour.
2. Put second item with TTL = 1 minute. Since
CleanupWorker's thread sleeps now, second item will not be expired at the time.
NOTE: This scenario is easily to reproducible if first and second items are put into cache asynchronously. If try to put them in same thread one-by-one expiration may work fine.
Attachments
Attachments
Issue Links
- relates to
-
IGNITE-3621 Make GridCacheTtlManager singleton
- Resolved