[
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*
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.
> 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)