From 807889f11d5adae4f43dd0f78ddc668b89528d72 Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Thu, 18 Dec 2025 21:18:07 +0300 Subject: [PATCH 1/6] raw --- .../query/index/IndexQueryResultMeta.java | 76 +++++++++++++++---- 1 file changed, 63 insertions(+), 13 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java index 1516611d842f19..4190ee81a955aa 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java @@ -17,8 +17,10 @@ package org.apache.ignite.internal.cache.query.index; +import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import org.apache.ignite.internal.Order; import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyDefinition; @@ -27,6 +29,7 @@ import org.apache.ignite.internal.cache.query.index.sorted.SortedIndexDefinition; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.plugin.extensions.communication.Message; +import org.jetbrains.annotations.Nullable; /** * Metadata for IndexQuery response. This information is required to be sent to a node that initiated a query. @@ -37,9 +40,16 @@ public class IndexQueryResultMeta implements Message { @Order(0) private IndexKeyTypeSettings keyTypeSettings; - /** Index key definitions. */ - @Order(value = 1, method = "keyDefinitions") - private LinkedHashMap keyDefs; + /** Index names order holder. Should be serialized before the definitions. */ + @Order(value = 1, method = "orderedIndexNames") + private List idxNames; + + /** Index definitions serialization holder. Should be serialized after the names. */ + @Order(value = 2, method = "orderedIndexDefinitions") + private List idxDefs; + + /** Map of index definitions with proper order. */ + private LinkedHashMap idxDefsMap; /** */ public IndexQueryResultMeta() { @@ -50,14 +60,14 @@ public IndexQueryResultMeta() { public IndexQueryResultMeta(SortedIndexDefinition def, int critSize) { keyTypeSettings = def.keyTypeSettings(); - keyDefs = U.newLinkedHashMap(critSize); + idxDefsMap = U.newLinkedHashMap(critSize); Iterator> keys = def.indexKeyDefinitions().entrySet().iterator(); for (int i = 0; i < critSize; i++) { Map.Entry key = keys.next(); - keyDefs.put(key.getKey(), key.getValue()); + idxDefsMap.put(key.getKey(), key.getValue()); } } @@ -76,15 +86,55 @@ public void keyTypeSettings(IndexKeyTypeSettings keyTypeSettings) { this.keyTypeSettings = keyTypeSettings; } - /** */ - public Map keyDefinitions() { - return keyDefs; + /** @return Map of index definitions with proper order. */ + public LinkedHashMap keyDefinitions() { + return idxDefsMap; } - /** */ - public void keyDefinitions(Map keyDefs) { - this.keyDefs = keyDefs == null - ? null - : keyDefs instanceof LinkedHashMap ? (LinkedHashMap)keyDefs : new LinkedHashMap<>(keyDefs); + /** @return Index names with proper order. */ + public Collection orderedIndexNames() { + assert idxDefsMap != null; + + return idxDefsMap.keySet(); + } + + /** + * Stores index names with proper order to build the linked map later. + * Should be called once and before the setting of the definitions and the map. + */ + public void orderedIndexNames(@Nullable List idxNames) { + assert this.idxNames == null : "Index names should be set once."; + assert idxDefs == null : "Index definitions should not be initialized yet."; + assert idxDefsMap == null : "Index definitions map should not be initialized yet."; + + this.idxNames = idxNames; + } + + /** @return Index definitions with proper order. */ + public Collection orderedIndexDefinitions() { + assert idxDefsMap != null; + + return idxDefsMap.values(); + } + + /** + * Process the index definitions with proper order and buils the linked map. + * Should be called once and after the setting of the index names. + */ + public void orderedIndexDefinitions(@Nullable List idxDefs) { + assert idxDefs != null || idxNames == null : "Both index names and index definitions must be null or not null."; + assert idxDefs == null || idxNames.size() == idxDefs.size() : "Number of index names and index definitions must be equal."; + + if (idxDefs == null) + return; + + assert idxDefsMap == null : "Index definitions map should not be initialized yet."; + + idxDefsMap = U.newLinkedHashMap(idxDefs.size()); + + for (int i = 0; i < idxDefs.size(); ++i) + idxDefsMap.put(idxNames.get(i), idxDefs.get(i)); + + idxNames = null; } } From cd6dff2eb0295ae88b7a699c8d9afa994f07c4db Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Thu, 18 Dec 2025 21:22:01 +0300 Subject: [PATCH 2/6] fix --- .../cache/query/index/IndexQueryResultMeta.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java index 4190ee81a955aa..08bd556f2c5e63 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java @@ -18,6 +18,7 @@ package org.apache.ignite.internal.cache.query.index; import java.util.Collection; +import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; @@ -107,7 +108,7 @@ public void orderedIndexNames(@Nullable List idxNames) { assert idxDefs == null : "Index definitions should not be initialized yet."; assert idxDefsMap == null : "Index definitions map should not be initialized yet."; - this.idxNames = idxNames; + this.idxNames = idxNames == null ? Collections.emptyList() : idxNames; } /** @return Index definitions with proper order. */ @@ -122,12 +123,11 @@ public Collection orderedIndexDefinitions() { * Should be called once and after the setting of the index names. */ public void orderedIndexDefinitions(@Nullable List idxDefs) { - assert idxDefs != null || idxNames == null : "Both index names and index definitions must be null or not null."; - assert idxDefs == null || idxNames.size() == idxDefs.size() : "Number of index names and index definitions must be equal."; - if (idxDefs == null) - return; + idxDefs = Collections.emptyList(); + assert idxNames != null : "The index names should be initialized already."; + assert idxNames.size() == idxDefs.size() : "Number of index names and index definitions must be equal."; assert idxDefsMap == null : "Index definitions map should not be initialized yet."; idxDefsMap = U.newLinkedHashMap(idxDefs.size()); From cc6fa3383258783284a9945133d69c8ee03cc04e Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Fri, 19 Dec 2025 12:28:43 +0300 Subject: [PATCH 3/6] fix `testMessageSerializationAndDeserializationConsistency` --- .../query/index/IndexQueryResultMeta.java | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java index 08bd556f2c5e63..8c8e277dd76a5f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java @@ -94,9 +94,7 @@ public LinkedHashMap keyDefinitions() { /** @return Index names with proper order. */ public Collection orderedIndexNames() { - assert idxDefsMap != null; - - return idxDefsMap.keySet(); + return idxDefsMap == null ? Collections.emptyList() : idxDefsMap.keySet(); } /** @@ -104,18 +102,14 @@ public Collection orderedIndexNames() { * Should be called once and before the setting of the definitions and the map. */ public void orderedIndexNames(@Nullable List idxNames) { - assert this.idxNames == null : "Index names should be set once."; - assert idxDefs == null : "Index definitions should not be initialized yet."; - assert idxDefsMap == null : "Index definitions map should not be initialized yet."; + idxDefsMap = null; - this.idxNames = idxNames == null ? Collections.emptyList() : idxNames; + this.idxNames = idxNames; } /** @return Index definitions with proper order. */ public Collection orderedIndexDefinitions() { - assert idxDefsMap != null; - - return idxDefsMap.values(); + return idxDefsMap == null ? Collections.emptyList() : idxDefsMap.values(); } /** @@ -123,12 +117,11 @@ public Collection orderedIndexDefinitions() { * Should be called once and after the setting of the index names. */ public void orderedIndexDefinitions(@Nullable List idxDefs) { - if (idxDefs == null) - idxDefs = Collections.emptyList(); + assert idxNames != null || idxDefs == null : "The index names should be initialized already."; + assert idxNames == null || idxNames.size() == idxDefs.size() : "Number of index names and index definitions must be equal."; - assert idxNames != null : "The index names should be initialized already."; - assert idxNames.size() == idxDefs.size() : "Number of index names and index definitions must be equal."; - assert idxDefsMap == null : "Index definitions map should not be initialized yet."; + if (idxDefs == null) + return; idxDefsMap = U.newLinkedHashMap(idxDefs.size()); From 6ceb167ab57a657ca5526dee77bf2cc321d75f65 Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Fri, 2 Jan 2026 17:57:00 +0300 Subject: [PATCH 4/6] + NodeLeftMessage --- .../discovery/DiscoveryMessageFactory.java | 3 +++ .../tcp/messages/TcpDiscoveryNodeLeftMessage.java | 14 +++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java index 1c01592fd0dd57..3a2844af1ac571 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java @@ -29,6 +29,7 @@ import org.apache.ignite.internal.codegen.TcpDiscoveryHandshakeRequestSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryHandshakeResponseSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryLoopbackProblemMessageSerializer; +import org.apache.ignite.internal.codegen.TcpDiscoveryNodeLeftMessageSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryPingRequestSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryPingResponseSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryRingLatencyCheckMessageSerializer; @@ -46,6 +47,7 @@ import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryHandshakeRequest; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryHandshakeResponse; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryLoopbackProblemMessage; +import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeLeftMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryPingRequest; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryPingResponse; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryRingLatencyCheckMessage; @@ -70,5 +72,6 @@ public class DiscoveryMessageFactory implements MessageFactoryProvider { factory.register((short)10, TcpDiscoveryHandshakeResponse::new, new TcpDiscoveryHandshakeResponseSerializer()); factory.register((short)11, TcpDiscoveryAuthFailedMessage::new, new TcpDiscoveryAuthFailedMessageSerializer()); factory.register((short)12, TcpDiscoveryDuplicateIdMessage::new, new TcpDiscoveryDuplicateIdMessageSerializer()); + factory.register((short)13, TcpDiscoveryNodeLeftMessage::new, new TcpDiscoveryNodeLeftMessageSerializer()); } } diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java index 5d6df69b715b72..a291cf8e91ba64 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java @@ -18,7 +18,9 @@ package org.apache.ignite.spi.discovery.tcp.messages; import java.util.UUID; +import org.apache.ignite.internal.managers.communication.GridIoMessageFactory; import org.apache.ignite.internal.util.typedef.internal.S; +import org.apache.ignite.plugin.extensions.communication.Message; /** * Sent by node that is stopping to coordinator across the ring, @@ -26,10 +28,15 @@ */ @TcpDiscoveryEnsureDelivery @TcpDiscoveryRedirectToClient -public class TcpDiscoveryNodeLeftMessage extends TcpDiscoveryAbstractTraceableMessage { +public class TcpDiscoveryNodeLeftMessage extends TcpDiscoveryAbstractTraceableMessage implements Message { /** */ private static final long serialVersionUID = 0L; + /** Constructor for {@link GridIoMessageFactory}. */ + public TcpDiscoveryNodeLeftMessage() { + // No-op. + } + /** * Constructor. * @@ -39,6 +46,11 @@ public TcpDiscoveryNodeLeftMessage(UUID creatorNodeId) { super(creatorNodeId); } + /** {@inheritDoc} */ + @Override public short directType() { + return 13; + } + /** {@inheritDoc} */ @Override public String toString() { return S.toString(TcpDiscoveryNodeLeftMessage.class, this, "super", super.toString()); From 727db99343464235cedb75ba6336eb40a676193f Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Sat, 3 Jan 2026 02:12:52 +0300 Subject: [PATCH 5/6] revert wrong commit --- .../discovery/DiscoveryMessageFactory.java | 3 --- .../tcp/messages/TcpDiscoveryNodeLeftMessage.java | 14 +------------- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java index 3a2844af1ac571..1c01592fd0dd57 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java @@ -29,7 +29,6 @@ import org.apache.ignite.internal.codegen.TcpDiscoveryHandshakeRequestSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryHandshakeResponseSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryLoopbackProblemMessageSerializer; -import org.apache.ignite.internal.codegen.TcpDiscoveryNodeLeftMessageSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryPingRequestSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryPingResponseSerializer; import org.apache.ignite.internal.codegen.TcpDiscoveryRingLatencyCheckMessageSerializer; @@ -47,7 +46,6 @@ import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryHandshakeRequest; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryHandshakeResponse; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryLoopbackProblemMessage; -import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeLeftMessage; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryPingRequest; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryPingResponse; import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryRingLatencyCheckMessage; @@ -72,6 +70,5 @@ public class DiscoveryMessageFactory implements MessageFactoryProvider { factory.register((short)10, TcpDiscoveryHandshakeResponse::new, new TcpDiscoveryHandshakeResponseSerializer()); factory.register((short)11, TcpDiscoveryAuthFailedMessage::new, new TcpDiscoveryAuthFailedMessageSerializer()); factory.register((short)12, TcpDiscoveryDuplicateIdMessage::new, new TcpDiscoveryDuplicateIdMessageSerializer()); - factory.register((short)13, TcpDiscoveryNodeLeftMessage::new, new TcpDiscoveryNodeLeftMessageSerializer()); } } diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java index a291cf8e91ba64..5d6df69b715b72 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeLeftMessage.java @@ -18,9 +18,7 @@ package org.apache.ignite.spi.discovery.tcp.messages; import java.util.UUID; -import org.apache.ignite.internal.managers.communication.GridIoMessageFactory; import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.plugin.extensions.communication.Message; /** * Sent by node that is stopping to coordinator across the ring, @@ -28,15 +26,10 @@ */ @TcpDiscoveryEnsureDelivery @TcpDiscoveryRedirectToClient -public class TcpDiscoveryNodeLeftMessage extends TcpDiscoveryAbstractTraceableMessage implements Message { +public class TcpDiscoveryNodeLeftMessage extends TcpDiscoveryAbstractTraceableMessage { /** */ private static final long serialVersionUID = 0L; - /** Constructor for {@link GridIoMessageFactory}. */ - public TcpDiscoveryNodeLeftMessage() { - // No-op. - } - /** * Constructor. * @@ -46,11 +39,6 @@ public TcpDiscoveryNodeLeftMessage(UUID creatorNodeId) { super(creatorNodeId); } - /** {@inheritDoc} */ - @Override public short directType() { - return 13; - } - /** {@inheritDoc} */ @Override public String toString() { return S.toString(TcpDiscoveryNodeLeftMessage.class, this, "super", super.toString()); From 7fd3d66bbc1dfd8e81dd5f410ed1644a16906f31 Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Fri, 16 Jan 2026 13:35:48 +0300 Subject: [PATCH 6/6] review fixes --- .../query/index/IndexQueryResultMeta.java | 78 +++++++++---------- 1 file changed, 35 insertions(+), 43 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java index 8c8e277dd76a5f..453f73bdd0a32b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryResultMeta.java @@ -17,17 +17,16 @@ package org.apache.ignite.internal.cache.query.index; -import java.util.Collection; -import java.util.Collections; +import java.util.Arrays; import java.util.Iterator; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; import org.apache.ignite.internal.Order; import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyDefinition; import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyTypeSettings; import org.apache.ignite.internal.cache.query.index.sorted.MetaPageInfo; import org.apache.ignite.internal.cache.query.index.sorted.SortedIndexDefinition; +import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.plugin.extensions.communication.Message; import org.jetbrains.annotations.Nullable; @@ -41,16 +40,13 @@ public class IndexQueryResultMeta implements Message { @Order(0) private IndexKeyTypeSettings keyTypeSettings; - /** Index names order holder. Should be serialized before the definitions. */ + /** Index names order holder. Should be serialized together with the definitions. */ @Order(value = 1, method = "orderedIndexNames") - private List idxNames; + private @Nullable String[] idxNames; - /** Index definitions serialization holder. Should be serialized after the names. */ + /** Index definitions serialization holder. Should be serialized together with the names. */ @Order(value = 2, method = "orderedIndexDefinitions") - private List idxDefs; - - /** Map of index definitions with proper order. */ - private LinkedHashMap idxDefsMap; + private @Nullable IndexKeyDefinition[] idxDefs; /** */ public IndexQueryResultMeta() { @@ -61,14 +57,18 @@ public IndexQueryResultMeta() { public IndexQueryResultMeta(SortedIndexDefinition def, int critSize) { keyTypeSettings = def.keyTypeSettings(); - idxDefsMap = U.newLinkedHashMap(critSize); - Iterator> keys = def.indexKeyDefinitions().entrySet().iterator(); - for (int i = 0; i < critSize; i++) { - Map.Entry key = keys.next(); + if (critSize > 0) { + idxNames = new String[critSize]; + idxDefs = new IndexKeyDefinition[critSize]; + + for (int i = 0; i < critSize; i++) { + Map.Entry key = keys.next(); - idxDefsMap.put(key.getKey(), key.getValue()); + idxNames[i] = key.getKey(); + idxDefs[i] = key.getValue(); + } } } @@ -89,45 +89,37 @@ public void keyTypeSettings(IndexKeyTypeSettings keyTypeSettings) { /** @return Map of index definitions with proper order. */ public LinkedHashMap keyDefinitions() { + if (F.isEmpty(idxNames) && F.isEmpty(idxDefs)) + return U.newLinkedHashMap(0); + + assert idxNames.length == idxDefs.length : "Number of index names and index definitions must be equal " + + "[idxNames=" + Arrays.toString(idxNames) + ", idxDefs=" + Arrays.toString(idxDefs) + "]"; + + LinkedHashMap idxDefsMap = U.newLinkedHashMap(idxNames.length); + + for (int i = 0; i < idxNames.length; i++) + idxDefsMap.put(idxNames[i], idxDefs[i]); + return idxDefsMap; } /** @return Index names with proper order. */ - public Collection orderedIndexNames() { - return idxDefsMap == null ? Collections.emptyList() : idxDefsMap.keySet(); + public @Nullable String[] orderedIndexNames() { + return idxNames; } - /** - * Stores index names with proper order to build the linked map later. - * Should be called once and before the setting of the definitions and the map. - */ - public void orderedIndexNames(@Nullable List idxNames) { - idxDefsMap = null; - + /** Stores index names with proper order to build the linked map later. */ + public void orderedIndexNames(@Nullable String[] idxNames) { this.idxNames = idxNames; } /** @return Index definitions with proper order. */ - public Collection orderedIndexDefinitions() { - return idxDefsMap == null ? Collections.emptyList() : idxDefsMap.values(); + public @Nullable IndexKeyDefinition[] orderedIndexDefinitions() { + return idxDefs; } - /** - * Process the index definitions with proper order and buils the linked map. - * Should be called once and after the setting of the index names. - */ - public void orderedIndexDefinitions(@Nullable List idxDefs) { - assert idxNames != null || idxDefs == null : "The index names should be initialized already."; - assert idxNames == null || idxNames.size() == idxDefs.size() : "Number of index names and index definitions must be equal."; - - if (idxDefs == null) - return; - - idxDefsMap = U.newLinkedHashMap(idxDefs.size()); - - for (int i = 0; i < idxDefs.size(); ++i) - idxDefsMap.put(idxNames.get(i), idxDefs.get(i)); - - idxNames = null; + /** Process the index definitions with proper order and buils the linked map. */ + public void orderedIndexDefinitions(@Nullable IndexKeyDefinition[] idxDefs) { + this.idxDefs = idxDefs; } }