[ 
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)

Reply via email to