This is an automated email from the ASF dual-hosted git repository.

mpochatkin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new ae25dc306d6 IGNITE-26445 Filter null order keys in case of 
configuration subtree (#6607)
ae25dc306d6 is described below

commit ae25dc306d67784cf007853705770b28a1402731
Author: Mikhail <[email protected]>
AuthorDate: Fri Sep 19 08:20:05 2025 +0300

    IGNITE-26445 Filter null order keys in case of configuration subtree (#6607)
---
 .../configuration/util/ConfigurationUtil.java      |  2 ++
 .../configuration/util/ConfigurationUtilTest.java  | 28 ++++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git 
a/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/util/ConfigurationUtil.java
 
b/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/util/ConfigurationUtil.java
index 7e463413ecf..941aae510f7 100644
--- 
a/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/util/ConfigurationUtil.java
+++ 
b/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/util/ConfigurationUtil.java
@@ -40,6 +40,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.NoSuchElementException;
+import java.util.Objects;
 import java.util.Queue;
 import java.util.RandomAccess;
 import java.util.Set;
@@ -1201,6 +1202,7 @@ public class ConfigurationUtil {
                     node.construct(oldKey, new 
LeafConfigurationSource((Serializable) val), true);
                 }
             }
+            orderedKeys.removeIf(Objects::isNull);
 
             node.reorderKeys(orderedKeys.size() > node.size()
                     ? orderedKeys.subList(0, node.size())
diff --git 
a/modules/configuration/src/test/java/org/apache/ignite/internal/configuration/util/ConfigurationUtilTest.java
 
b/modules/configuration/src/test/java/org/apache/ignite/internal/configuration/util/ConfigurationUtilTest.java
index cbb8b1b29c7..25acddb4348 100644
--- 
a/modules/configuration/src/test/java/org/apache/ignite/internal/configuration/util/ConfigurationUtilTest.java
+++ 
b/modules/configuration/src/test/java/org/apache/ignite/internal/configuration/util/ConfigurationUtilTest.java
@@ -24,6 +24,7 @@ import static java.util.function.Function.identity;
 import static java.util.stream.Collectors.toList;
 import static 
org.apache.ignite.configuration.annotation.ConfigurationType.DISTRIBUTED;
 import static 
org.apache.ignite.configuration.annotation.ConfigurationType.LOCAL;
+import static org.apache.ignite.internal.configuration.tree.NamedListNode.IDS;
 import static org.apache.ignite.internal.configuration.tree.NamedListNode.NAME;
 import static 
org.apache.ignite.internal.configuration.tree.NamedListNode.ORDER_IDX;
 import static 
org.apache.ignite.internal.configuration.util.ConfigurationFlattener.createFlattenedUpdatesMap;
@@ -433,6 +434,33 @@ public class ConfigurationUtilTest {
         assertEquals("value2", 
parentChange.elements().get("name2").child().str());
     }
 
+    @Test
+    public void fillFromPrefixMapWithNotFullNamedListSuccessfully() {
+        InnerNode parentNode = 
newNodeInstance(ParentConfigurationSchema.class);
+
+        ParentChange parentChange = (ParentChange) parentNode;
+
+        // Entry with order index 0 is filtered
+        ConfigurationUtil.fillFromPrefixMap(parentNode, Map.of(
+                "elements", Map.of(
+                        "01234567-89ab-cdef-0123-456789abcdef", Map.of(
+                                "child", Map.of("str", "value2"),
+                                ORDER_IDX, 1,
+                                NAME, "name2"
+                        ),
+                        IDS, Map.of("name2", 
"01234567-89ab-cdef-0123-456789abcdef")
+                )
+        ));
+
+        List<String> listKeys = parentChange.elements().namedListKeys();
+        assertEquals(1, listKeys.size());
+
+        String key = listKeys.get(0);
+        assertEquals("name2", key);
+
+        assertEquals("value2", 
parentChange.elements().get("name2").child().str());
+    }
+
     /**
      * Tests that patching of configuration node with a prefix map works fine 
when prefix map is valid.
      */

Reply via email to