[
https://issues.apache.org/jira/browse/IGNITE-24138?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kirill Gusakov updated IGNITE-24138:
------------------------------------
Description:
[DistributionZoneManager.onUpdatePartitionDistributionResetBusy|https://github.com/apache/ignite-3/blob/2a8d29f860aa1122130f037319a6bf5fee3d63ca/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java#L416]
has the issue with the following assertion:
{code:java}
Optional<Long> highestRevision =
zoneState.highestRevision(true);
assert highestRevision.isEmpty() || causalityToken >=
highestRevision.get() : IgniteStringFormatter.format(
"Expected causalityToken that is greater or equal to
already seen meta storage events: highestRevision={}, "
+ "causalityToken={}",
highestRevision.orElse(null), causalityToken
);
{code}
The tricky part is {{zoneState.highestRevision(true)}} - actually we can't use
the addition=true|false semantic here for this method, because it is a reset
timer configuration update. Instead we should introduce and use here the
general version:
{code:java}
Optional<Long> highestRevision() {
return topologyAugmentationMap().entrySet()
.stream()
.max(Map.Entry.comparingByKey())
.map(Map.Entry::getKey);
}
{code}
was:
[https://github.com/apache/ignite-3/blob/2a8d29f860aa1122130f037319a6bf5fee3d63ca/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java#L416]
> DistributionZoneManager.onUpdatePartitionDistributionResetBusy has the wrong
> highestRevision usage
> --------------------------------------------------------------------------------------------------
>
> Key: IGNITE-24138
> URL: https://issues.apache.org/jira/browse/IGNITE-24138
> Project: Ignite
> Issue Type: Bug
> Reporter: Kirill Gusakov
> Priority: Major
> Labels: ignite-3
>
> [DistributionZoneManager.onUpdatePartitionDistributionResetBusy|https://github.com/apache/ignite-3/blob/2a8d29f860aa1122130f037319a6bf5fee3d63ca/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java#L416]
> has the issue with the following assertion:
> {code:java}
> Optional<Long> highestRevision =
> zoneState.highestRevision(true);
> assert highestRevision.isEmpty() || causalityToken >=
> highestRevision.get() : IgniteStringFormatter.format(
> "Expected causalityToken that is greater or equal to
> already seen meta storage events: highestRevision={}, "
> + "causalityToken={}",
> highestRevision.orElse(null), causalityToken
> );
> {code}
> The tricky part is {{zoneState.highestRevision(true)}} - actually we can't
> use the addition=true|false semantic here for this method, because it is a
> reset timer configuration update. Instead we should introduce and use here
> the general version:
> {code:java}
> Optional<Long> highestRevision() {
> return topologyAugmentationMap().entrySet()
> .stream()
> .max(Map.Entry.comparingByKey())
> .map(Map.Entry::getKey);
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)