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

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

o: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 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*
> o: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