[
https://issues.apache.org/jira/browse/IGNITE-21753?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Roman Puchkovskiy updated IGNITE-21753:
---------------------------------------
Description:
To enable Metastorage compaction (that is, removal of overwritten revisions
that are not needed to anyone any more), there is IGNITE-19417, but it might
take some time to define the corresponding LWM's rules.
As a crutch, we might implement a simplified procedure for some keys. For
instance, a big percentage of garbage is created by a constantly overwritten
key related to lease tracking.
If a key is never scanned (either distributively, via range()/prefix(), or
locally, via xxxLocally() returning a Cursor) and only its latest version is
always accessed (this seems to be true for the above mentioned lease-related
key), we can just do compactKey() for such a key after any update involving it.
We might also need to reimplement getAndPut() to read before doing a put as the
current implementation requires 2 latest versions to be stored (because it
makes a put first and only then reads using the 'before the put' revision).
> Implement a hacky self-compaction for selected Metastorage keys
> ---------------------------------------------------------------
>
> Key: IGNITE-21753
> URL: https://issues.apache.org/jira/browse/IGNITE-21753
> Project: Ignite
> Issue Type: Improvement
> Reporter: Roman Puchkovskiy
> Priority: Major
> Labels: ignite-3
>
> To enable Metastorage compaction (that is, removal of overwritten revisions
> that are not needed to anyone any more), there is IGNITE-19417, but it might
> take some time to define the corresponding LWM's rules.
> As a crutch, we might implement a simplified procedure for some keys. For
> instance, a big percentage of garbage is created by a constantly overwritten
> key related to lease tracking.
> If a key is never scanned (either distributively, via range()/prefix(), or
> locally, via xxxLocally() returning a Cursor) and only its latest version is
> always accessed (this seems to be true for the above mentioned lease-related
> key), we can just do compactKey() for such a key after any update involving
> it.
> We might also need to reimplement getAndPut() to read before doing a put as
> the current implementation requires 2 latest versions to be stored (because
> it makes a put first and only then reads using the 'before the put' revision).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)