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

nizhikov pushed a commit to branch IGNITE-25928
in repository https://gitbox.apache.org/repos/asf/ignite.git

commit f0662dd08ea946c518bca106e9d900c51f6b7353
Author: Nikolay Izhikov <[email protected]>
AuthorDate: Wed Jul 16 21:41:36 2025 +0300

    IGNITE-25928 WIP
---
 .../apache/ignite/internal/binary/BinaryContext.java | 20 +++++++-------------
 .../ignite/internal/binary/BinaryMarshaller.java     |  3 ++-
 .../internal/client/thin/ClientBinaryMarshaller.java |  3 ++-
 .../internal/jdbc/thin/JdbcThinConnection.java       |  3 ++-
 .../internal/processors/cache/GridCacheUtils.java    | 16 ++++++++++++++++
 .../ignite/testframework/junits/IgniteMock.java      |  3 ++-
 6 files changed, 31 insertions(+), 17 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
index 4e6c39a8372..f23a56f53a7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
@@ -60,7 +60,6 @@ import org.apache.ignite.binary.BinaryReflectiveSerializer;
 import org.apache.ignite.binary.BinarySerializer;
 import org.apache.ignite.binary.BinaryType;
 import org.apache.ignite.binary.BinaryTypeConfiguration;
-import org.apache.ignite.cache.CacheKeyConfiguration;
 import org.apache.ignite.cache.affinity.AffinityKey;
 import org.apache.ignite.cache.affinity.AffinityKeyMapped;
 import org.apache.ignite.configuration.BinaryConfiguration;
@@ -79,8 +78,8 @@ import 
org.apache.ignite.internal.processors.platform.websession.PlatformDotNetS
 import org.apache.ignite.internal.processors.query.QueryUtils;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.apache.ignite.internal.util.lang.GridMapEntry;
-import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.T2;
+import org.apache.ignite.internal.util.typedef.internal.CU;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.lang.IgniteUuid;
@@ -173,7 +172,6 @@ public class BinaryContext {
     /** TODO: remove me */
     BinaryConfiguration bcfg = igniteCfg.getBinaryConfiguration();
 
-
     /** Logger. */
     private IgniteLogger log;
 
@@ -338,15 +336,16 @@ public class BinaryContext {
      * @throws BinaryObjectException In case of error.
      */
     public void configure(BinaryMarshaller marsh) throws BinaryObjectException 
{
-        configure(marsh, null);
+        configure(marsh, null, CU.affinityFields(igniteCfg));
     }
 
     /**
      * @param marsh Binary marshaller.
      * @param binaryCfg Binary configuration.
+     * @param affFlds Type name to affinity key field name mapping.
      * @throws BinaryObjectException In case of error.
      */
-    public void configure(BinaryMarshaller marsh, BinaryConfiguration 
binaryCfg) throws BinaryObjectException {
+    public void configure(BinaryMarshaller marsh, BinaryConfiguration 
binaryCfg, Map<String, String> affFlds) throws BinaryObjectException {
         if (marsh == null)
             return;
 
@@ -361,28 +360,23 @@ public class BinaryContext {
 
         optmMarsh.setContext(marshCtx);
 
-        Map<String, String> affFields = new HashMap<>();
-
-        if (!F.isEmpty(igniteCfg.getCacheKeyConfiguration())) {
-            for (CacheKeyConfiguration keyCfg : 
igniteCfg.getCacheKeyConfiguration())
-                affFields.put(keyCfg.getTypeName(), 
keyCfg.getAffinityKeyFieldName());
-        }
-
         configure(
             binaryCfg.getNameMapper(),
             binaryCfg.getIdMapper(),
             binaryCfg.getSerializer(),
             binaryCfg.getTypeConfigurations(),
-            affFields
+            affFlds
         );
 
         compactFooter = binaryCfg.isCompactFooter();
     }
 
     /**
+     * @param globalNameMapper Name mapper.
      * @param globalIdMapper ID mapper.
      * @param globalSerializer Serializer.
      * @param typeCfgs Type configurations.
+     * @param affFields Type to affinity fields mapping.
      * @throws BinaryObjectException In case of error.
      */
     private void configure(
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
index 21251db8572..dd5336d2fa2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
@@ -25,6 +25,7 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.binary.BinaryObjectException;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
+import org.apache.ignite.internal.util.typedef.internal.CU;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller;
 import org.jetbrains.annotations.Nullable;
@@ -74,7 +75,7 @@ public class BinaryMarshaller extends 
AbstractNodeNameAwareMarshaller {
      * @param ctx Binary context.
      */
     public void setBinaryContext(BinaryContext ctx, IgniteConfiguration cfg) {
-        ctx.configure(this, cfg != null ? cfg.getBinaryConfiguration() : null);
+        ctx.configure(this, cfg != null ? cfg.getBinaryConfiguration() : null, 
CU.affinityFields(cfg));
 
         impl = new GridBinaryMarshaller(ctx);
     }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinaryMarshaller.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinaryMarshaller.java
index eeb84946771..f7862bc7782 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinaryMarshaller.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinaryMarshaller.java
@@ -24,6 +24,7 @@ import org.apache.ignite.internal.binary.BinaryMarshaller;
 import org.apache.ignite.internal.binary.BinaryMetadataHandler;
 import org.apache.ignite.internal.binary.GridBinaryMarshaller;
 import org.apache.ignite.internal.binary.streams.BinaryInputStream;
+import org.apache.ignite.internal.util.typedef.internal.CU;
 import org.apache.ignite.logger.NullLogger;
 import org.apache.ignite.marshaller.MarshallerContext;
 
@@ -113,7 +114,7 @@ class ClientBinaryMarshaller {
 
         marsh.setContext(marshCtx);
 
-        ctx.configure(marsh, binCfg);
+        ctx.configure(marsh, binCfg, CU.affinityFields(igniteCfg));
 
         ctx.registerUserTypesSchema();
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java
index f32303f9cd0..c48f82a1403 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java
@@ -120,6 +120,7 @@ import 
org.apache.ignite.internal.sql.optimizer.affinity.PartitionClientContext;
 import org.apache.ignite.internal.sql.optimizer.affinity.PartitionResult;
 import org.apache.ignite.internal.util.HostAndPortRange;
 import org.apache.ignite.internal.util.future.GridFutureAdapter;
+import org.apache.ignite.internal.util.typedef.internal.CU;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgnitePredicate;
 import org.apache.ignite.lang.IgniteProductVersion;
@@ -326,7 +327,7 @@ public class JdbcThinConnection implements Connection {
 
         BinaryContext ctx = new BinaryContext(metaHnd, null, new NullLogger());
 
-        ctx.configure(marsh, binCfg);
+        ctx.configure(marsh, binCfg, CU.affinityFields(null));
 
         ctx.registerUserTypesSchema();
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
index e133c0df724..58dba32905a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
@@ -2175,6 +2175,22 @@ public class GridCacheUtils {
         return strategies;
     }
 
+    /**
+     * @param cfg Ignite configuration.
+     * @return Type name to affinity key field name mapping.
+     */
+    public static Map<String, String> affinityFields(@Nullable 
IgniteConfiguration cfg) {
+        Map<String, String> affFields = new HashMap<>();
+
+        if (cfg == null || F.isEmpty(cfg.getCacheKeyConfiguration()))
+            return affFields;
+
+        for (CacheKeyConfiguration keyCfg : cfg.getCacheKeyConfiguration())
+            affFields.put(keyCfg.getTypeName(), 
keyCfg.getAffinityKeyFieldName());
+
+        return affFields;
+    }
+
     /**
      *
      */
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
index 7125191c3ed..d729dc0710b 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
@@ -74,6 +74,7 @@ import 
org.apache.ignite.internal.processors.cache.persistence.wal.reader.Standa
 import org.apache.ignite.internal.processors.cacheobject.NoOpBinary;
 import 
org.apache.ignite.internal.processors.subscription.GridInternalSubscriptionProcessor;
 import 
org.apache.ignite.internal.processors.tracing.configuration.NoopTracingConfigurationManager;
+import org.apache.ignite.internal.util.typedef.internal.CU;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.lang.IgnitePredicate;
@@ -448,7 +449,7 @@ public class IgniteMock implements IgniteEx {
                 }
             };
 
-            ctx.configure((BinaryMarshaller)marshaller, 
configuration().getBinaryConfiguration());
+            ctx.configure((BinaryMarshaller)marshaller, 
configuration().getBinaryConfiguration(), CU.affinityFields(configuration()));
         }
 
         binaryMock = new NoOpBinary() {

Reply via email to