[
https://issues.apache.org/jira/browse/IGNITE-18763?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aleksandr Polovtcev updated IGNITE-18763:
-----------------------------------------
Summary: Parallel Meta Storage Watch processing (was: Concurrent Meta
Storage Watch processing)
> Parallel Meta Storage Watch processing
> --------------------------------------
>
> Key: IGNITE-18763
> URL: https://issues.apache.org/jira/browse/IGNITE-18763
> Project: Ignite
> Issue Type: Task
> Components: persistence
> Reporter: Sergey Chugunov
> Assignee: Aleksandr Polovtcev
> Priority: Major
> Labels: ignite-3
> Fix For: 3.0.0-beta2
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Currently Meta Storage Watches follow the given contract:
> # All listeners are processed sequentially in the order that they have been
> registered;
> # All listeners are processed in the same thread;
> # All notifications are grouped by a particular revision. After all events
> for a particular revision get processed, all modified keys are persisted into
> the Vault.
> Some components may rely on this to ensure that dependent components can
> observe the most recent component state, because they registered their Meta
> Storage listeners after the component they depend on, therefore it is
> guaranteed that that component has already processed current Meta Storage
> revision.
> This approach can be improved in terms of performance by enabling concurrent
> Watch processing in multiple threads. In order to do that, we need to check
> and fix the following places:
> # If a component depends on another component's state, this state must be
> extracted into a Versioned Value;
> # If a component updates its state, relying on the fact, that this state is
> always updated in a single thread, concurrent primitives must be introduced
> to ensure thread safety;
> # Check if it is possible to persist updated keys in the Vault individually,
> thus making it possible not to wait for all Watches for a particular revision
> to complete before starting to process updates belonging to the next
> revision.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)