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

Denis Chudov updated IGNITE-16763:
----------------------------------
    Description: 
*Scenario:*

Start a node, try to create a table. Inside of TableManager the listener 
{{onTableCreate }}is successfully executed. Then, an exception happens inside 
of {{TableManager#updateAssignments}} configuration listener, which is 
triggered after the completion of \{{onTableCreate }}listener. 

*Expected behavior:*

There is no operational instance of the newly created table on the node that 
initiated creation of the table, because \{{updateAssignments }}had failed. 
"Create table" operation should fail with exception.

*Actual:*

"Create table" operation succeeds, as \{{onTableCreate }}listener in 
TableManager had  succeeded.

*Suggested fix:*

{{updateAssignments }}should save exception to versioned values in 
TableManager, as it updates these versioned values. Thus, the following 
{{VersionedValue#get}} will throw an exception, and table creation future will 
be completed exceptionally (see {{TableManager#completeApiCreateFuture}} ). 
However, we should think about how further updates of these versioned values 
will happen.

 

  was:
*Scenario*

Start a node, try to create a table. Inside of TableManager the listener 
{{onTableCreate }}is successfully executed. Then, an exception happens inside 
of {{TableManager#updateAssignments}} configuration listener, which is 
triggered after the completion of \{{onTableCreate }}listener. 

*Expected behavior:*

There is no operational instance of the newly created table on the node that 
initiated creation of the table, because \{{updateAssignments }}had failed. 
"Create table" operation should fail with exception.

*Actual:*

"Create table" operation succeeds, as \{{onTableCreate }}listener in 
TableManager had  succeeded.

*Suggested fix:*

{{updateAssignments }}should save exception to versioned values in 
TableManager, as it updates these versioned values. Thus, the following 
{{VersionedValue#get}} will throw an exception, and table creation future will 
be completed exceptionally (see {{TableManager#completeApiCreateFuture}} ). 
However, we should think about how further updates of these versioned values 
will happen.

 


> TableManager doesn't throw exception on table create, if something goes wrong 
> in configuration listener for updateAssignments
> -----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-16763
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16763
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Denis Chudov
>            Priority: Major
>              Labels: ignite-3
>
> *Scenario:*
> Start a node, try to create a table. Inside of TableManager the listener 
> {{onTableCreate }}is successfully executed. Then, an exception happens inside 
> of {{TableManager#updateAssignments}} configuration listener, which is 
> triggered after the completion of \{{onTableCreate }}listener. 
> *Expected behavior:*
> There is no operational instance of the newly created table on the node that 
> initiated creation of the table, because \{{updateAssignments }}had failed. 
> "Create table" operation should fail with exception.
> *Actual:*
> "Create table" operation succeeds, as \{{onTableCreate }}listener in 
> TableManager had  succeeded.
> *Suggested fix:*
> {{updateAssignments }}should save exception to versioned values in 
> TableManager, as it updates these versioned values. Thus, the following 
> {{VersionedValue#get}} will throw an exception, and table creation future 
> will be completed exceptionally (see {{TableManager#completeApiCreateFuture}} 
> ). However, we should think about how further updates of these versioned 
> values will happen.
>  



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

Reply via email to