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

Filipp Shergalis resolved IGNITE-26408.
---------------------------------------
    Resolution: Invalid

> Support changes in configuration for Rolling Upgrade
> ----------------------------------------------------
>
>                 Key: IGNITE-26408
>                 URL: https://issues.apache.org/jira/browse/IGNITE-26408
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Filipp Shergalis
>            Priority: Major
>              Labels: ignite-3
>
> When upgraded node saves a newly added configuration field to metastorage, 
> older nodes receive this update and fail trying to apply it. We should find a 
> way to change configurations without breaking RU
>  
> Example of such case, on an older node after upgraded node was started
> {code:java}
> 2025-09-08 10:07:03:535 +0000 
> [ERROR][%RollingUpgradeTest_cluster_2%metastorage-watch-executor-2][WatchProcessor]
>  Notification chain encountered an error, so no notifications will be ever 
> fired for subsequent revisions until a restart. Notifying the FailureManager. 
> Additional info: 'Keys of updated entries: 
> dst-cfg.ignite.sql.planner.planCacheExpiresAfterSeconds,dst-cfg.$master$key,icp.1d151219-cc3e-4fb3-9d38-8075e0ee38f7_cnt_0'
> 2025-09-08 10:07:03:537 +0000 
> [ERROR][%RollingUpgradeTest_cluster_2%metastorage-watch-executor-2][FailureManager]
>  Critical system error detected. Will be handled accordingly to configured 
> handler [hnd=NoOpFailureHandler [super=AbstractFailureHandler 
> [ignoredFailureTypes=UnmodifiableSet [SYSTEM_WORKER_BLOCKED, 
> SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=CRITICAL_ERROR]
> org.apache.ignite.internal.failure.StackTraceCapturingException: 
> IGN-CMN-65535 Unknown error TraceId:04f3892b
>     at 
> org.apache.ignite.internal.failure.FailureManager.process(FailureManager.java:183)
>     at 
> org.apache.ignite.internal.failure.FailureManager.process(FailureManager.java:160)
>     at 
> org.apache.ignite.internal.metastorage.server.WatchProcessor.notifyFailureHandlerOnFirstFailureInNotificationChain(WatchProcessor.java:418)
>     at 
> org.apache.ignite.internal.metastorage.server.WatchProcessor.lambda$enqueue$3(WatchProcessor.java:227)
>     at 
> java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(Unknown 
> Source)
>     at 
> java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(Unknown
>  Source)
>     at java.base/java.util.concurrent.CompletableFuture.postComplete(Unknown 
> Source)
>     at java.base/java.util.concurrent.CompletableFuture.postFire(Unknown 
> Source)
>     at 
> java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(Unknown 
> Source)
>     at 
> java.base/java.util.concurrent.CompletableFuture$Completion.run(Unknown 
> Source)
>     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown 
> Source)
>     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown 
> Source)
>     at java.base/java.lang.Thread.run(Unknown Source)
> Caused by: java.util.concurrent.CompletionException: 
> java.util.NoSuchElementException: planCacheExpiresAfterSeconds
>     at 
> java.base/java.util.concurrent.CompletableFuture.encodeThrowable(Unknown 
> Source)
>     at 
> java.base/java.util.concurrent.CompletableFuture.completeThrowable(Unknown 
> Source)
>     at 
> java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(Unknown 
> Source)
>     at 
> java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(Unknown 
> Source)
>     at java.base/java.util.concurrent.CompletableFuture.whenComplete(Unknown 
> Source)
>     at 
> org.apache.ignite.internal.metastorage.server.WatchProcessor.performWatchesNotifications(WatchProcessor.java:299)
>     at 
> org.apache.ignite.internal.metastorage.server.WatchProcessor.lambda$notifyWatchesInternal$7(WatchProcessor.java:253)
>     at 
> org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:930)
>     at 
> org.apache.ignite.internal.metastorage.server.WatchProcessor.inBusyLockAsync(WatchProcessor.java:180)
>     at 
> org.apache.ignite.internal.metastorage.server.WatchProcessor.lambda$enqueue$2(WatchProcessor.java:224)
>     ... 5 more
> Caused by: java.util.NoSuchElementException: planCacheExpiresAfterSeconds
>     at 
> org.apache.ignite.internal.sql.configuration.distributed.SqlPlannerDistributedNode.construct(Unknown
>  Source)
>     at 
> org.apache.ignite.internal.configuration.util.ConfigurationUtil$InnerConfigurationSource.descend(ConfigurationUtil.java:1092)
>     at 
> org.apache.ignite.internal.sql.configuration.distributed.SqlDistributedNode.construct(Unknown
>  Source)
>     at 
> org.apache.ignite.internal.configuration.util.ConfigurationUtil$InnerConfigurationSource.descend(ConfigurationUtil.java:1090)
>     at org.apache.ignite.internal.configuration.ClusterNode.construct(Unknown 
> Source)
>     at 
> org.apache.ignite.internal.configuration.util.ConfigurationUtil$InnerConfigurationSource.descend(ConfigurationUtil.java:1090)
>     at 
> org.apache.ignite.internal.configuration.SuperRoot.construct(SuperRoot.java:142)
>     at 
> org.apache.ignite.internal.configuration.util.ConfigurationUtil$InnerConfigurationSource.descend(ConfigurationUtil.java:1090)
>     at 
> org.apache.ignite.internal.configuration.util.ConfigurationUtil.fillFromPrefixMap(ConfigurationUtil.java:275)
>     at 
> org.apache.ignite.internal.configuration.ConfigurationChanger.lambda$configurationStorageListener$9(ConfigurationChanger.java:722)
>     at 
> org.apache.ignite.internal.configuration.storage.DistributedConfigurationStorage.lambda$registerConfigurationListener$3(DistributedConfigurationStorage.java:292)
>     at 
> org.apache.ignite.internal.metastorage.server.Watch.onUpdate(Watch.java:59)
>     at 
> org.apache.ignite.internal.metastorage.server.WatchProcessor.performWatchesNotifications(WatchProcessor.java:294)
>     ... 9 more{code}
> {{}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to