[
https://issues.apache.org/jira/browse/IGNITE-16120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Roman Puchkovskiy updated IGNITE-16120:
---------------------------------------
Summary: Return real page size if encryption is configured for a cache
group even when keys are not injected yet (was: Return real page size if
encryption is configured for a region even when keys are not injected yet)
> Return real page size if encryption is configured for a cache group even when
> keys are not injected yet
> -------------------------------------------------------------------------------------------------------
>
> Key: IGNITE-16120
> URL: https://issues.apache.org/jira/browse/IGNITE-16120
> Project: Ignite
> Issue Type: Improvement
> Components: cache
> Affects Versions: 2.13
> Reporter: Roman Puchkovskiy
> Assignee: Roman Puchkovskiy
> Priority: Major
>
> When encryption is enabled for a region in the configuration,
> PageMemory#realPageSize(int) returns a value reduced by some
> encryption-related data overhead. For instance, currently, when full page
> size (returned by PageMemory#pageSize()) is 4096, #realPageSize(int) returns
> 4064.
> But #realPageSize(int) starts returning the 'real' realPageSize only when it
> has some keys for the provided group ID. The injection of keys happens on
> node join. The following comment explains why:
> //We can't store keys before node join to cluster(on statically configured
> cache registration).
> //Because, keys should be received from cluster.
> //Otherwise, we would generate different keys on each started node.
> //So, after starting, coordinator saves locally newly generated encryption
> keys.
> //And sends that keys to every joining node.
> This means that for short period of time (before the keys are injected)
> #realPageSize(int) returns full page size (4096); this happens when
> allocating pages with metadata for caches preconfigured in the region
> configuration, for example. These pages are initialized with wrong page size.
> Currently, this page size is not used for these pages during initialization,
> but in the future this might cause some problem.
> My suggestion is to try remove this gap.
> # First of all, for the preconfigured groups (listed in IgniteConfiguration
> which is accessible to PageMemoryImpl constructor) we don't need to wait for
> keys injection: we just have the list of these groups
> # Another option (probably better) would be to employ some event system to
> mark a group as encrypted before it gets created. If such a mechanism exists
> :) If not, maybe it's not that hard to implement it.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)