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() {
