[ 
https://issues.apache.org/jira/browse/IGNITE-16044?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vladislav Pyatkov updated IGNITE-16044:
---------------------------------------
    Description: 
Today we faced with issue where we cannot distinguish which an operation is 
completed on Metastorage notification.

Several asynchronous updates over one table are initiated, but which of them 
completed when Metastorage gives an information about update the table is not 
clear. Currently, we compete all active operations when the even one 
notification received. It is obviously wrong.

For solving the issue, Configuration should return a Metastorage revision 
number where the change is completed:

{code:title=ConfigurationTree.java}

/**
* Changes this configuration node value.
*
* @param change CHANGE object.
* @return Future that is completed when configuration change is finished either 
successfully or not. If the change finished successfully, the future will 
contain a revision that corresponds to the change and will get in notification 
{@link ConfigurationNotificationEvent#storageRevision}.
*/
CompletableFuture<Long> change(Consumer<CHANGET> change);

{code}

{code:title=ConfigurationValue.java}
/**
* Update this configuration node value.
*
* @param change New value for the configuration. Must not be null.
* @return Future that signifies end of the update operation. Can also be 
completed with {@link ConfigurationValidationException} and
*      {@link ConfigurationChangeException}. If the change finished 
successfully, the future will contain a revision that corresponds to the change 
and will get in notification {@link 
ConfigurationNotificationEvent#storageRevision}.
*/
CompletableFuture<Void> update(VIEWT change);
{code}
After a change applied, the associated revision will be available, and the same 
revision is available when Metastorage notifies the handler through a 
configuration listener.
{code:title=ConfigurationNotificationEvent.java}
/**
 * Returns monotonously increasing counter, linked to the specific storage for 
current configuration values. Gives a unique change
 * identifier inside a specific configuration storage.
 *
 * @return Counter value.
 */
long storageRevision();
{code}
 

  was:
Today we faced with issue where we cannot distinguish which an operation is 
completed on Metastorage notification.

Several asynchronous updates over one table are initiated, but which of them 
completed when Metastorage gives an information about update the table is not 
clear. Currently, we compete all active operations when the even one 
notification received. It is obviously wrong.

For solving the issue, Configuration should return a Metastorage revision 
number where the change is completed:

{code:title=ConfigurationTree.java}

/**
* Changes this configuration node value.
*
* @param change CHANGE object.
* @return Future that is completed when configuration change is finished either 
successfully or not. If the change finished successfully, the future will 
contain a revision that corresponds to the change and will get in notification 
{@link ConfigurationNotificationEvent#storageRevision}.
*/
CompletableFuture<Long> change(Consumer<CHANGET> change);

{code}

{code:title=ConfigurationValue.java}
/**
     * Update this configuration node value.
     *
     * @param change New value for the configuration. Must not be null.
     * @return Future that signifies end of the update operation. Can also be 
completed with {@link ConfigurationValidationException} and
     *      {@link ConfigurationChangeException}. If the change finished 
successfully, the future will contain a revision that corresponds to the change 
and will get in notification {@link 
ConfigurationNotificationEvent#storageRevision}.
     */
    CompletableFuture<Void> update(VIEWT change);
{code}
 


> Configuration should provide a revision after a cahnge complited
> ----------------------------------------------------------------
>
>                 Key: IGNITE-16044
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16044
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Vladislav Pyatkov
>            Priority: Major
>
> Today we faced with issue where we cannot distinguish which an operation is 
> completed on Metastorage notification.
> Several asynchronous updates over one table are initiated, but which of them 
> completed when Metastorage gives an information about update the table is not 
> clear. Currently, we compete all active operations when the even one 
> notification received. It is obviously wrong.
> For solving the issue, Configuration should return a Metastorage revision 
> number where the change is completed:
> {code:title=ConfigurationTree.java}
> /**
> * Changes this configuration node value.
> *
> * @param change CHANGE object.
> * @return Future that is completed when configuration change is finished 
> either successfully or not. If the change finished successfully, the future 
> will contain a revision that corresponds to the change and will get in 
> notification {@link ConfigurationNotificationEvent#storageRevision}.
> */
> CompletableFuture<Long> change(Consumer<CHANGET> change);
> {code}
> {code:title=ConfigurationValue.java}
> /**
> * Update this configuration node value.
> *
> * @param change New value for the configuration. Must not be null.
> * @return Future that signifies end of the update operation. Can also be 
> completed with {@link ConfigurationValidationException} and
> *      {@link ConfigurationChangeException}. If the change finished 
> successfully, the future will contain a revision that corresponds to the 
> change and will get in notification {@link 
> ConfigurationNotificationEvent#storageRevision}.
> */
> CompletableFuture<Void> update(VIEWT change);
> {code}
> After a change applied, the associated revision will be available, and the 
> same revision is available when Metastorage notifies the handler through a 
> configuration listener.
> {code:title=ConfigurationNotificationEvent.java}
> /**
>  * Returns monotonously increasing counter, linked to the specific storage 
> for current configuration values. Gives a unique change
>  * identifier inside a specific configuration storage.
>  *
>  * @return Counter value.
>  */
> long storageRevision();
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to