[
https://issues.apache.org/jira/browse/IGNITE-7823?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pavel Pereslegin updated IGNITE-7823:
-------------------------------------
Comment: was deleted
(was: Implementation details:
- DataStructuresProcessor#compatibleCache creates separate cache for each new
non-collocated version of IgniteSet (method IgniteSet#close destroys this
cache).
- A new version of IgniteSet called GrideCacheSetImplV2 was created, common
internal service methods required by proxy extracted to separate interface
called IgniteInternalSet.
- A new header GrideCacheSetHeaderV2 was created (also was added common header
interface called CacheSetHeader).
- Duplicate code GridCacheSetImpl and GrieCacheSetHeader should be removed in
next major release.)
> Separate cache for non collocated IgniteSet.
> --------------------------------------------
>
> Key: IGNITE-7823
> URL: https://issues.apache.org/jira/browse/IGNITE-7823
> Project: Ignite
> Issue Type: New Feature
> Components: data structures
> Reporter: Andrey Kuznetsov
> Assignee: Pavel Pereslegin
> Priority: Major
> Fix For: 2.6
>
>
> Currently, single data structures cache is shared between several collection
> instances (IgniteQueue, IgniteSet).
> To support iterator() and size() IgniteSet maintains plain on-heap Java sets
> on every node (see CacheDataStructuresManager.setDataMap). These sets
> duplicate backing-cache entries, both primary and backup. For big
> non-collocated sets it's too expensive to maintain redundant onheap data
> copies. The simplest way to avoid copies is to use separate cache for
> non-collocated IgniteSet version; hence size of set is the same as size of
> backing cache, and also set iterator is virtually the same as backing cache
> iterator.
> The difference between exising set implementation and set based on separate
> cache should be properly documented afterwards.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)