You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Oleg Valuyskiy (Jira)" <ji...@apache.org> on 2026/06/22 06:41:00 UTC
[jira] [Updated] (IGNITE-28806) CacheAffinitySharedManager may fail with "Invalid exchange futures state" when thin clients create dynamic caches during cluster restart
[ https://issues.apache.org/jira/browse/IGNITE-28806?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Oleg Valuyskiy updated IGNITE-28806:
------------------------------------
Description:
A server node may fail during the first local join exchange if thin clients concurrently issue *getOrCreateCache()* requests when cluster is starting. Dynamic cache group descriptors can become visible in *cachesRegistry* before the corresponding local *CacheGroupContext* is created. In this state, *CacheAffinitySharedManager#initCoordinatorCaches* is called with {*}newAff=false{*}, enters the *grp == null* branch, and tries to fetch affinity from a previous completed exchange. For the first local join exchange there is no previous exchange, which may lead to:
{code:java}
AssertionError: Invalid exchange futures state [cur=..., total=...]{code}
Reproducer:
[^ThinClientDynamicCachePressureOnRestartTest.patch]
was:
A server node may fail during the first local join exchange if thin clients concurrently issue *getOrCreateCache()* requests when cluster is starting. Dynamic cache group descriptors can become visible in *cachesRegistry* before the corresponding local *CacheGroupContext* is created. In this state, *CacheAffinitySharedManager#initCoordinatorCaches* is called with {*}newAff=false{*}, enters the *grp == null* branch, and tries to fetch affinity from a previous completed exchange. For the first local join exchange there is no previous exchange, which may lead to:
{code:java}
AssertionError: Invalid exchange futures state [cur=..., total=...]{code}
Reproducer:
> CacheAffinitySharedManager may fail with "Invalid exchange futures state" when thin clients create dynamic caches during cluster restart
> ----------------------------------------------------------------------------------------------------------------------------------------
>
> Key: IGNITE-28806
> URL: https://issues.apache.org/jira/browse/IGNITE-28806
> Project: Ignite
> Issue Type: Task
> Reporter: Oleg Valuyskiy
> Assignee: Oleg Valuyskiy
> Priority: Minor
> Labels: ise
> Attachments: ThinClientDynamicCachePressureOnRestartTest.patch
>
>
> A server node may fail during the first local join exchange if thin clients concurrently issue *getOrCreateCache()* requests when cluster is starting. Dynamic cache group descriptors can become visible in *cachesRegistry* before the corresponding local *CacheGroupContext* is created. In this state, *CacheAffinitySharedManager#initCoordinatorCaches* is called with {*}newAff=false{*}, enters the *grp == null* branch, and tries to fetch affinity from a previous completed exchange. For the first local join exchange there is no previous exchange, which may lead to:
> {code:java}
> AssertionError: Invalid exchange futures state [cur=..., total=...]{code}
> Reproducer:
> [^ThinClientDynamicCachePressureOnRestartTest.patch]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)