[
https://issues.apache.org/jira/browse/IGNITE-17062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexander Lapin updated IGNITE-17062:
-------------------------------------
Description:
Local events (org.apache.ignite.internal.manager.Event) logic should be
reworked a bit in order to await all subscribers to process corresponding event
before publishing the action. Let's check an example of an expected behavior:
# TableManager prepares table for creation.
# TableManager notifies all subscribers with Table.CREATE event propagating
to-be-created table.
# TableManager (with the help of org.apache.ignite.internal.manager.Producer)
awaits all subscribers to acknowledge that Table.CREATE event was successfully
processed. E.g. SqlQueryProcessor prepares calcite schemes and sends ack by
completing event's Future like it's done within ConfigurationRegistry events.
# TableManager on Compound-Like-Future.allOff(events) publishes corresponding
action, e.g. makes table visible to everyone.
Proposed solution is very similar to what we already have in
ConfigurationRegistry
{code:java}
public interface ConfigurationListener<VIEWT> {
/**
* Called on property value update.
*
* @param ctx Notification context.
* @return Future that signifies the end of the listener execution.
*/
CompletableFuture<?> onUpdate(ConfigurationNotificationEvent<VIEWT> ctx);
}{code}
was:
Local events (org.apache.ignite.internal.manager.Event) logic should be
reworked a bit in order to await all signers to process corresponding event
before publishing the action. Let's check an example of an expected behavior:
# TableManager prepares table for creation.
# TableManager notifies all signers with Table.CREATE event propagating given
to-be-created table.
# TableManager (with the help of org.apache.ignite.internal.manager.Producer)
awaits all signers to acknowledge that Table.CREATE event was successfully
processed. E.g. SqlQueryProcessor prepares calcite schemes on mentioned above
Table.CREATE and when ready sends the ack by completing events Future like it's
done within ConfigurationRegistry events.
# TableManager on Compound-Like-Future.allOff(events) publishes corresponding
action, e.g. makes table visible to everyone.
> Add ability to process local events synchronously
> -------------------------------------------------
>
> Key: IGNITE-17062
> URL: https://issues.apache.org/jira/browse/IGNITE-17062
> Project: Ignite
> Issue Type: Task
> Reporter: Alexander Lapin
> Priority: Major
> Labels: ignite-3
>
> Local events (org.apache.ignite.internal.manager.Event) logic should be
> reworked a bit in order to await all subscribers to process corresponding
> event before publishing the action. Let's check an example of an expected
> behavior:
> # TableManager prepares table for creation.
> # TableManager notifies all subscribers with Table.CREATE event propagating
> to-be-created table.
> # TableManager (with the help of
> org.apache.ignite.internal.manager.Producer) awaits all subscribers to
> acknowledge that Table.CREATE event was successfully processed. E.g.
> SqlQueryProcessor prepares calcite schemes and sends ack by completing
> event's Future like it's done within ConfigurationRegistry events.
> # TableManager on Compound-Like-Future.allOff(events) publishes
> corresponding action, e.g. makes table visible to everyone.
> Proposed solution is very similar to what we already have in
> ConfigurationRegistry
> {code:java}
> public interface ConfigurationListener<VIEWT> {
> /**
> * Called on property value update.
> *
> * @param ctx Notification context.
> * @return Future that signifies the end of the listener execution.
> */
> CompletableFuture<?> onUpdate(ConfigurationNotificationEvent<VIEWT> ctx);
> }{code}
--
This message was sent by Atlassian Jira
(v8.20.7#820007)