[
https://issues.apache.org/jira/browse/IGNITE-21387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17837121#comment-17837121
]
Mikhail Efremov edited comment on IGNITE-21387 at 4/15/24 9:05 AM:
-------------------------------------------------------------------
At the current state, the following changes are done:
* In {{ItDistributionZonesFiltersTest}} the single
testFilteredDataNodesPropagatedToStable test was divided on 3 separate tests:
** {{testDataNodesByFilterPropagatedToStable}} that tests only by attribute
filtering by specified region and storage filter;
** {{testDataNodesByProfilePropagatedToStable}} that tests only by matching
profile name;
** {{testDataNodesByFilterAndProfilePropagatedToStable}} tests both cases
together: attribute filters and profile both.
* In {{TableManager}} was done refactoring:
** extracting assignments creation into the separate method
{{createOrGetLocallyAssignmentsAsync}} along as
{{{}writeTableAssignmentsToMetastore{}}};
** the goal of the previous bullet is to introduce new methods
{{isLocalNodeInAssignmentList}} and
{{isLocalNodeMatchAssignment}} that should be used for checking on a node's
TableManager and IndexManager is the node belongs to current stable assignments
or not. If the latter, then node shouldn't create storages and indices:
{{MvTableStorage}} and
{{TxStateTableStorage}} on table create event in
{{TableManager#createStorages}} and {{IndexManager#startIndexAsync}}
correspondingly.
Current issue is related to versioned values' race:
* {{TableManager.java:1395}} on {{tableVv.update(...)}}
* {{IndexManager.java:270}} on {{handleMetastoreEventVv.update(...)}}
There is {{AssertionError}} with a message like "Causality token is outdated,
previous token 21, got 21" when the number 21 may vary.
The reason is metastore's colling in {{createOrGetLocallyAssignmentsAsync}}
along as
{{{}writeTableAssignmentsToMetastore{}}}:
* the first one calls metastore to check are stable assignments equals null in
{{{}TableManager.java:1298{}}};
* the last one calls metastore to write stable assignments in
{{TableManager.java:705-706}} on {{.invoke(...)}} method.
There should be a way to call versioned value's update before addressing to
metastore.
was (Author: JIRAUSER303791):
At the current state, the following changes are done:
* In {{ItDistributionZonesFiltersTest}} the single
testFilteredDataNodesPropagatedToStable test was divided on 3 separate
tests:{color:#6b2fba}
{color}
**
{{testDataNodesByFilterPropagatedToStable}} that tests only by attribute
filtering by specified region and storage filter;
**
{{testDataNodesByProfilePropagatedToStable}} that tests only by matching
profile name;
**
{{testDataNodesByFilterAndProfilePropagatedToStable}} tests both cases
together: attribute filters and profile both.
* In {{TableManager}} was done refactoring:
** exctracting assignments creation into the separate method
{{createOrGetLocallyAssignmentsAsync}} along as
{{writeTableAssignmentsToMetastore;
}}
> Recovery is not possible, if node have no needed storage profile
> ----------------------------------------------------------------
>
> Key: IGNITE-21387
> URL: https://issues.apache.org/jira/browse/IGNITE-21387
> Project: Ignite
> Issue Type: Improvement
> Reporter: Kirill Gusakov
> Assignee: Mikhail Efremov
> Priority: Major
> Labels: ignite-3
>
> Looks like any table try to create storages on the recovery node, even if is
> shouldn't be here, because of zone storage profile filter.
> The isssue is reproducing by
> ItDistributionZonesFiltersTest#testFilteredDataNodesPropagatedToStable. So,
> test must be enabled or reworked by this ticket.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)