[
https://issues.apache.org/jira/browse/IGNITE-24371?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mikhail Efremov reassigned IGNITE-24371:
----------------------------------------
Assignee: Mikhail Efremov
> Pass isVolatile flag when creating a zone partition
> ---------------------------------------------------
>
> Key: IGNITE-24371
> URL: https://issues.apache.org/jira/browse/IGNITE-24371
> Project: Ignite
> Issue Type: Improvement
> Reporter: Roman Puchkovskiy
> Assignee: Mikhail Efremov
> Priority: Major
> Labels: ignite-3
>
> *Description*
>
> As it was refined in IGNITE-24556 for a zone with any persistent storage we
> consider {{isVolatile}} as {{false}} and iif all zone's storages are volatile
> then {{isVolatile}} is {{true}}. Only in the last case we create both
> volatile RAFT and table storages. Otherwise we create persistent RAFT storage
> and a table storage depends on its storage profile.
> This changes demands to pass {{DataStorageManager}} component to
> {{PartitionReplicaLifecycleManager}} and check that zone is volatile. Zone is
> volatile iif all storage profiles that may be checked from zone description,
> are volatile. A storage profile's volatility may be checked through
> {{DataStorageManager#engineByStorageProfile}}, so the draft solution is:
> {code:java}
> boolean isVolatileZone = zoneDescriptor.storageProfiles()
> .profiles()
> .stream()
> .map(CatalogStorageProfileDescriptor::storageProfile)
> .map(dataStorageManager::engineByStorageProfile)
> .filter(Objects::nonNull)
> .allMatch(StorageEngine::isVolatile);
> {code}
> This flag should be passed to zone replica starting process inside
> {{PartitionReplicaLifecycleManager#createZonePartitionReplicationNode}} in
> {{replicaMgr#startReplica}} call with the corresponding TODO commentary.
> Last but not least we have to make tests that checks that volatile storages
> both for a RAFT node and a table are created and able to process commands
> during a stable cluster. Tests should use both mixed and volatile zone
> profiles scenarios.
> *Motivation*
> We should provide compatible behavior for in-memory storages for zone
> colocation.
> *Definition of done*
> # The flag {{isVolatile}} now computes based on zone's storage profiles.
> # For this purpose the {{DataStorageManager}} is passed to
> {{PartitionReplicaLifecycleManager}}.
> # Test that check mixed profiles is written:
> ## check for persistent RAFT storage is presented;
> ## check for volatile table storage is presented;
> ## check for persistent table storage is presented;
> ## check for successful read-write commands for both table storages are
> presented.
> # Test that check volatile-only zone profile is written:
> ## check for volatile RAFT storage is presented;
> ## check for volatile table storage is presented;
> ## check for successful read-write commands for volatile table storage is
> presented.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)