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 a88e3448f1d99de7eaf078d7a854e2c55a02f4a6
Author: Nikolay Izhikov <[email protected]>
AuthorDate: Thu Jul 17 12:18:55 2025 +0300

    IGNITE-25928 WIP
---
 .../apache/ignite/internal/binary/BinaryArray.java |  2 +-
 .../ignite/internal/binary/BinaryContext.java      | 48 ++++++++++++++--------
 .../internal/binary/BinaryEnumObjectImpl.java      |  2 +-
 .../ignite/internal/binary/BinaryObjectImpl.java   |  4 +-
 .../internal/binary/BinaryObjectOffheapImpl.java   |  2 +-
 .../ignite/internal/binary/BinaryReaderExImpl.java |  2 +-
 .../apache/ignite/internal/binary/BinaryUtils.java |  2 +-
 .../ignite/internal/binary/BinaryWriterExImpl.java |  2 +-
 .../internal/binary/builder/BinaryBuilderEnum.java |  2 +-
 .../binary/builder/BinaryBuilderReader.java        |  6 +--
 .../binary/builder/BinaryEnumArrayLazyValue.java   |  2 +-
 .../binary/builder/BinaryObjectArrayLazyValue.java |  2 +-
 .../binary/builder/BinaryObjectBuilderImpl.java    |  2 +-
 .../client/thin/ClientBinaryMarshaller.java        |  2 +-
 .../internal/client/thin/TcpClientChannel.java     |  2 +-
 .../internal/jdbc/thin/JdbcThinConnection.java     |  4 +-
 .../ignite/internal/jdbc/thin/JdbcThinTcpIo.java   |  2 +-
 .../binary/CacheObjectBinaryProcessorImpl.java     |  3 +-
 .../processors/odbc/ClientListenerNioListener.java |  2 +-
 .../apache/ignite/internal/util/IgniteUtils.java   | 21 +++++++---
 .../binary/BinaryFieldExtractionSelfTest.java      |  2 +-
 .../binary/BinaryFieldsAbstractSelfTest.java       |  2 +-
 .../BinaryFooterOffsetsAbstractSelfTest.java       |  2 +-
 .../internal/binary/BinaryMarshallerSelfTest.java  |  2 +
 .../GridBinaryMarshallerCtxDisabledSelfTest.java   |  2 +-
 .../binary/RawBinaryObjectExtractorTest.java       |  2 +-
 .../platform/PlatformGetInternalCachesTask.java    |  2 +-
 .../session/GridSessionCheckpointSelfTest.java     |  1 +
 .../testframework/junits/GridAbstractTest.java     |  1 +
 .../junits/GridTestBinaryMarshaller.java           |  1 +
 .../ignite/testframework/junits/IgniteMock.java    |  1 +
 .../testframework/junits/IgniteTestResources.java  |  2 +-
 32 files changed, 83 insertions(+), 51 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryArray.java 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryArray.java
index b5269f4a11d..fef7e7d746a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryArray.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryArray.java
@@ -103,7 +103,7 @@ class BinaryArray implements BinaryObjectEx, 
Externalizable, Comparable<BinaryAr
 
     /** {@inheritDoc} */
     @Override public <T> T deserialize(ClassLoader ldr) throws 
BinaryObjectException {
-        ClassLoader resolveLdr = ldr == null ? 
ctx.configuration().getClassLoader() : ldr;
+        ClassLoader resolveLdr = ldr == null ? ctx.classLoader() : ldr;
 
         if (ldr != null)
             GridBinaryMarshaller.USE_CACHE.set(Boolean.FALSE);
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 edf10d7791c..83eeaea5485 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
@@ -63,7 +63,6 @@ import org.apache.ignite.binary.BinaryTypeConfiguration;
 import org.apache.ignite.cache.affinity.AffinityKey;
 import org.apache.ignite.cache.affinity.AffinityKeyMapped;
 import org.apache.ignite.configuration.BinaryConfiguration;
-import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.DuplicateTypeIdException;
 import org.apache.ignite.internal.UnregisteredBinaryTypeException;
 import org.apache.ignite.internal.UnregisteredClassException;
@@ -79,7 +78,6 @@ 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.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;
@@ -160,15 +158,18 @@ public class BinaryContext {
     /** */
     private BinaryMetadataHandler metaHnd;
 
+    /** Node name. */
+    private final String igniteInstanceName;
+
+    /** Class loader. */
+    private final ClassLoader clsLdr = null;
+
     /** Actual marshaller. */
     private BinaryMarshaller marsh;
 
     /** */
     private MarshallerContext marshCtx;
 
-    /** */
-    private final IgniteConfiguration igniteCfg = null;
-
     /** Binary configuration. */
     private final BinaryConfiguration bcfg;
 
@@ -185,26 +186,34 @@ public class BinaryContext {
     private volatile Map<Integer, BinarySchemaRegistry> schemas;
 
     /**
-     * @param nodeName Ignite instance name.
+     * @param igniteInstanceName Ignite instance name.
      * @param bcfg Binary configuration.
      * @param log Logger.
      */
-    public BinaryContext(@Nullable String nodeName, @Nullable 
BinaryConfiguration bcfg, IgniteLogger log) {
-        this(BinaryNoopMetadataHandler.instance(), nodeName, bcfg, log);
+    public BinaryContext(@Nullable String igniteInstanceName, @Nullable 
BinaryConfiguration bcfg, IgniteLogger log) {
+        this(BinaryNoopMetadataHandler.instance(), igniteInstanceName, null, 
bcfg, log);
     }
 
     /**
      * @param metaHnd Meta data handler.
-     * @param nodeName Ignite instance name.
+     * @param igniteInstanceName Ignite instance name.
+     * @param clsLdr Class loader.
      * @param bcfg Binary configuration.
      * @param log Logger.
      */
-    public BinaryContext(BinaryMetadataHandler metaHnd, @Nullable String 
nodeName, @Nullable BinaryConfiguration bcfg, IgniteLogger log) {
+    public BinaryContext(
+        BinaryMetadataHandler metaHnd,
+        @Nullable String igniteInstanceName,
+        @Nullable ClassLoader clsLdr,
+        @Nullable BinaryConfiguration bcfg,
+        IgniteLogger log
+    ) {
         assert metaHnd != null;
 
-        MarshallerUtils.setNodeName(optmMarsh, nodeName);
+        MarshallerUtils.setNodeName(optmMarsh, igniteInstanceName);
 
         this.metaHnd = metaHnd;
+        this.igniteInstanceName = igniteInstanceName;
         this.bcfg = bcfg;
         this.log = log;
 
@@ -328,10 +337,17 @@ public class BinaryContext {
     }
 
     /**
-     * @return Ignite configuration.
+     * @return Ignite instance name.
+     */
+    public String igniteInstanceName() {
+        return igniteInstanceName;
+    }
+
+    /**
+     * @return Class loader.
      */
-    public IgniteConfiguration configuration() {
-        return igniteCfg;
+    public ClassLoader classLoader() {
+        return clsLdr;
     }
 
     /**
@@ -339,7 +355,7 @@ public class BinaryContext {
      * @throws BinaryObjectException In case of error.
      */
     public void configure(BinaryMarshaller marsh) throws BinaryObjectException 
{
-        configure(marsh, null, CU.affinityFields(igniteCfg));
+        configure(marsh, null, new HashMap<>());
     }
 
     /**
@@ -1166,7 +1182,7 @@ public class BinaryContext {
         Class<?> cls = null;
 
         try {
-            cls = U.resolveClassLoader(configuration()).loadClass(clsName);
+            cls = U.resolveClassLoader(null, classLoader()).loadClass(clsName);
         }
         catch (ClassNotFoundException | NoClassDefFoundError ignored) {
             // No-op.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
index 88db71fbea4..4d69956edff 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
@@ -173,7 +173,7 @@ class BinaryEnumObjectImpl implements BinaryObjectEx, 
Externalizable, CacheObjec
 
     /** {@inheritDoc} */
     @Override public <T> T deserialize(@Nullable ClassLoader ldr) throws 
BinaryObjectException {
-        ClassLoader resolveLdr = ldr == null ? 
ctx.configuration().getClassLoader() : ldr;
+        ClassLoader resolveLdr = ldr == null ? ctx.classLoader() : ldr;
 
         if (ldr != null)
             GridBinaryMarshaller.USE_CACHE.set(Boolean.FALSE);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
index cb66242cdfb..5cbd148c31b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
@@ -873,7 +873,7 @@ final class BinaryObjectImpl extends BinaryObjectExImpl 
implements Externalizabl
      */
     private Object deserializeValue(@Nullable CacheObjectValueContext coCtx) {
         BinaryReaderEx reader = reader(null, coCtx != null ?
-            coCtx.kernalContext().config().getClassLoader() : 
ctx.configuration().getClassLoader(), true);
+            coCtx.kernalContext().config().getClassLoader() : 
ctx.classLoader(), true);
 
         Object obj0 = reader.deserialize();
 
@@ -906,7 +906,7 @@ final class BinaryObjectImpl extends BinaryObjectExImpl 
implements Externalizabl
     private BinaryReaderEx reader(@Nullable BinaryReaderHandles rCtx, 
@Nullable ClassLoader ldr,
         boolean forUnmarshal) {
         if (ldr == null)
-            ldr = ctx.configuration().getClassLoader();
+            ldr = ctx.classLoader();
 
         return BinaryUtils.reader(ctx,
             BinaryStreams.inputStream(arr, start),
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
index 57be2a50128..40ff9130c45 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
@@ -531,7 +531,7 @@ class BinaryObjectOffheapImpl extends BinaryObjectExImpl 
implements Externalizab
      * @return Reader.
      */
     private BinaryReaderEx reader(@Nullable BinaryReaderHandles rCtx, boolean 
forUnmarshal) {
-        return reader(rCtx, ctx.configuration().getClassLoader(), 
forUnmarshal);
+        return reader(rCtx, ctx.classLoader(), forUnmarshal);
     }
 
     /**
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
index 7e8605ae4c1..025e33eb52f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
@@ -1701,7 +1701,7 @@ class BinaryReaderExImpl implements BinaryReaderEx {
 
     /** {@inheritDoc} */
     @Override public @Nullable Object deserialize() throws 
BinaryObjectException {
-        String newName = ctx.configuration().getIgniteInstanceName();
+        String newName = ctx.igniteInstanceName();
         String oldName = IgniteUtils.setCurrentIgniteName(newName);
 
         try {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
index 7fff65e3721..150073fe022 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
@@ -1874,7 +1874,7 @@ public class BinaryUtils {
         ByteArrayInputStream input = new ByteArrayInputStream(in.array(), 
in.position(), len);
 
         try {
-            return ctx.optimizedMarsh().unmarshal(input, 
U.resolveClassLoader(clsLdr, ctx.configuration()));
+            return ctx.optimizedMarsh().unmarshal(input, 
U.resolveClassLoader(clsLdr, ctx.classLoader()));
         }
         catch (IgniteCheckedException e) {
             throw new BinaryObjectException("Failed to unmarshal object with 
optimized marshaller", e);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
index 7c2dcc5d787..9bb268c3ccc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
@@ -130,7 +130,7 @@ class BinaryWriterExImpl implements BinaryWriterEx {
      * @throws org.apache.ignite.binary.BinaryObjectException In case of error.
      */
     void marshal(Object obj, boolean enableReplace) throws 
BinaryObjectException {
-        String newName = ctx.configuration().getIgniteInstanceName();
+        String newName = ctx.igniteInstanceName();
         String oldName = IgniteUtils.setCurrentIgniteName(newName);
 
         try {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderEnum.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderEnum.java
index 6831ea27dde..23bd32b6d83 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderEnum.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderEnum.java
@@ -57,7 +57,7 @@ class BinaryBuilderEnum implements 
BinaryBuilderSerializationAware {
             Class cls;
 
             try {
-                cls = U.forName(reader.readString(), 
reader.binaryContext().configuration().getClassLoader());
+                cls = U.forName(reader.readString(), 
reader.binaryContext().classLoader());
             }
             catch (ClassNotFoundException e) {
                 throw new BinaryInvalidTypeException("Failed to load the 
class: " + clsName, e);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
index 9232f60ee63..be39b33304f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
@@ -69,7 +69,7 @@ class BinaryBuilderReader implements BinaryPositionReadable {
 
         reader = BinaryUtils.reader(ctx,
             BinaryStreams.inputStream(arr, pos),
-            ctx.configuration().getClassLoader(),
+            ctx.classLoader(),
             false);
 
         objMap = new HashMap<>();
@@ -491,7 +491,7 @@ class BinaryBuilderReader implements BinaryPositionReadable 
{
             case GridBinaryMarshaller.OPTM_MARSH: {
                 final BinaryInputStream bin = BinaryStreams.inputStream(arr, 
pos + 1);
 
-                final Object obj = BinaryUtils.doReadOptimized(bin, ctx, 
U.resolveClassLoader(ctx.configuration()));
+                final Object obj = BinaryUtils.doReadOptimized(bin, ctx, 
U.resolveClassLoader(null, ctx.classLoader()));
 
                 return obj;
             }
@@ -843,7 +843,7 @@ class BinaryBuilderReader implements BinaryPositionReadable 
{
             case GridBinaryMarshaller.OPTM_MARSH: {
                 final BinaryInputStream bin = BinaryStreams.inputStream(arr, 
pos);
 
-                final Object obj = BinaryUtils.doReadOptimized(bin, ctx, 
U.resolveClassLoader(ctx.configuration()));
+                final Object obj = BinaryUtils.doReadOptimized(bin, ctx, 
U.resolveClassLoader(null, ctx.classLoader()));
 
                 pos = bin.position();
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryEnumArrayLazyValue.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryEnumArrayLazyValue.java
index 4dcf30fcb78..f966abca5bf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryEnumArrayLazyValue.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryEnumArrayLazyValue.java
@@ -50,7 +50,7 @@ class BinaryEnumArrayLazyValue extends 
BinaryAbstractLazyValue {
             Class cls;
 
             try {
-                cls = U.forName(reader.readString(), 
reader.binaryContext().configuration().getClassLoader());
+                cls = U.forName(reader.readString(), 
reader.binaryContext().classLoader());
             }
             catch (ClassNotFoundException e) {
                 throw new BinaryInvalidTypeException("Failed to load the 
class: " + clsName, e);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectArrayLazyValue.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectArrayLazyValue.java
index 335b9129f6f..ebdf96c04d6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectArrayLazyValue.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectArrayLazyValue.java
@@ -49,7 +49,7 @@ class BinaryObjectArrayLazyValue extends 
BinaryAbstractLazyValue {
             Class cls;
 
             try {
-                cls = U.forName(reader.readString(), 
reader.binaryContext().configuration().getClassLoader());
+                cls = U.forName(reader.readString(), 
reader.binaryContext().classLoader());
             }
             catch (ClassNotFoundException e) {
                 throw new BinaryInvalidTypeException("Failed to load the 
class: " + clsName, e);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
index 87cb045262b..b39c5d5e7ea 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
@@ -147,7 +147,7 @@ class BinaryObjectBuilderImpl implements 
BinaryObjectBuilder {
             Class cls;
 
             try {
-                cls = U.forName(clsNameToWrite, 
ctx.configuration().getClassLoader());
+                cls = U.forName(clsNameToWrite, ctx.classLoader());
             }
             catch (ClassNotFoundException e) {
                 throw new BinaryInvalidTypeException("Failed to load the 
class: " + clsNameToWrite, e);
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 89e6e84b5f9..e0a443c0353 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
@@ -108,7 +108,7 @@ class ClientBinaryMarshaller {
 
         igniteCfg.setBinaryConfiguration(binCfg);
 
-        BinaryContext ctx = new BinaryContext(metaHnd, null, null, 
NullLogger.INSTANCE);
+        BinaryContext ctx = new BinaryContext(metaHnd, null, null, null, 
NullLogger.INSTANCE);
 
         BinaryMarshaller marsh = new BinaryMarshaller();
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientChannel.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientChannel.java
index 0c418f90934..eeebd6313b7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientChannel.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientChannel.java
@@ -839,7 +839,7 @@ class TcpClientChannel implements ClientChannel, 
ClientMessageHandler, ClientCon
     /** Send handshake request. */
     private void handshakeReq(ProtocolVersion proposedVer, String user, String 
pwd,
         Map<String, String> userAttrs) throws ClientConnectionException {
-        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null);
+        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null, null);
 
         try (BinaryWriterEx writer = BinaryUtils.writer(ctx, 
BinaryStreams.outputStream(32), null)) {
             ProtocolContext protocolCtx = 
protocolContextFromVersion(proposedVer);
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 24070d51bd7..a5cc2cb6247 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
@@ -296,7 +296,7 @@ public class JdbcThinConnection implements Connection {
         netTimeout = connProps.getConnectionTimeout();
         qryTimeout = connProps.getQueryTimeout();
         maintenanceExecutor = Executors.newScheduledThreadPool(2,
-            new 
IgniteThreadFactory(ctx.configuration().getIgniteInstanceName(), 
"jdbc-maintenance"));
+            new IgniteThreadFactory(ctx.igniteInstanceName(), 
"jdbc-maintenance"));
 
         schema = JdbcUtils.normalizeSchema(connProps.getSchema());
 
@@ -325,7 +325,7 @@ public class JdbcThinConnection implements Connection {
 
         BinaryConfiguration binCfg = new 
BinaryConfiguration().setCompactFooter(true);
 
-        BinaryContext ctx = new BinaryContext(metaHnd, null, null, new 
NullLogger());
+        BinaryContext ctx = new BinaryContext(metaHnd, null, null, null, new 
NullLogger());
 
         ctx.configure(marsh, binCfg, CU.affinityFields(null));
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinTcpIo.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinTcpIo.java
index 70ec0fa0f93..b9be9141742 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinTcpIo.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinTcpIo.java
@@ -268,7 +268,7 @@ public class JdbcThinTcpIo {
      * @throws SQLException On connection reject.
      */
     private HandshakeResult handshake(ClientListenerProtocolVersion ver) 
throws IOException, SQLException {
-        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null);
+        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null, null);
 
         BinaryMarshaller marsh = new BinaryMarshaller();
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
index 428efd825ee..4a5bbd4892f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
@@ -283,6 +283,7 @@ public class CacheObjectBinaryProcessorImpl extends 
GridProcessorAdapter impleme
             : new BinaryContext(
                 metaHnd,
                 ctx.config().getIgniteInstanceName(),
+                ctx.config().getClassLoader(),
                 ctx.config().getBinaryConfiguration(),
                 ctx.log(BinaryContext.class)
             );
@@ -1643,7 +1644,7 @@ public class CacheObjectBinaryProcessorImpl extends 
GridProcessorAdapter impleme
          */
         public TestBinaryContext(BinaryMetadataHandler metaHnd, 
IgniteConfiguration cfg,
             IgniteLogger log) {
-            super(metaHnd, cfg.getIgniteInstanceName(), 
cfg.getBinaryConfiguration(), log);
+            super(metaHnd, cfg.getIgniteInstanceName(), cfg.getClassLoader(), 
cfg.getBinaryConfiguration(), log);
         }
 
         /** {@inheritDoc} */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerNioListener.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerNioListener.java
index 04828c92a4a..51e134cdf98 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerNioListener.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerNioListener.java
@@ -356,7 +356,7 @@ public class ClientListenerNioListener extends 
GridNioServerListenerAdapter<Clie
      * @param msg Message bytes.
      */
     private void onHandshake(GridNioSession ses, ClientMessage msg) {
-        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null);
+        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null, null);
 
         BinaryMarshaller marsh = new BinaryMarshaller();
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java 
b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index f21b0dc2cc9..e1dc14ebc04 100755
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -2114,14 +2114,23 @@ public abstract class IgniteUtils extends CommonUtils {
      * ClassLoader at IgniteConfiguration in case it is not null or
      * ClassLoader used to start Ignite.
      */
-    public static ClassLoader resolveClassLoader(ClassLoader ldr, 
IgniteConfiguration cfg) {
+    public static ClassLoader resolveClassLoader(@Nullable ClassLoader ldr, 
IgniteConfiguration cfg) {
         assert cfg != null;
 
-        return (ldr != null && ldr != gridClassLoader) ?
-            ldr :
-            cfg.getClassLoader() != null ?
-                cfg.getClassLoader() :
-                gridClassLoader;
+        return resolveClassLoader(ldr, cfg.getClassLoader());
+    }
+
+    /**
+     * @param ldr Custom class loader.
+     * @param cfgLdr Class loader from config.
+     * @return ClassLoader passed as param in case it is not null or cfgLdr  
in case it is not null or ClassLoader used to start Ignite.
+     */
+    public static ClassLoader resolveClassLoader(@Nullable ClassLoader ldr, 
@Nullable ClassLoader cfgLdr) {
+        return (ldr != null && ldr != gridClassLoader)
+            ? ldr
+            : cfgLdr != null
+                ? cfgLdr
+                : gridClassLoader;
     }
 
     /**
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFieldExtractionSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFieldExtractionSelfTest.java
index f443a5882fb..c999c7c9c12 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFieldExtractionSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFieldExtractionSelfTest.java
@@ -43,7 +43,7 @@ public class BinaryFieldExtractionSelfTest extends 
GridCommonAbstractTest {
      * @throws Exception If failed.
      */
     protected BinaryMarshaller createMarshaller() throws Exception {
-        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null,
+        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null,
             log());
 
         BinaryMarshaller marsh = new BinaryMarshaller();
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFieldsAbstractSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFieldsAbstractSelfTest.java
index c27cf753c82..31c259d71c7 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFieldsAbstractSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFieldsAbstractSelfTest.java
@@ -48,7 +48,7 @@ public abstract class BinaryFieldsAbstractSelfTest extends 
GridCommonAbstractTes
      * @throws Exception If failed.
      */
     protected BinaryMarshaller createMarshaller() throws Exception {
-        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null,
+        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null,
             new NullLogger());
 
         BinaryMarshaller marsh = new BinaryMarshaller();
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java
index c88843495b7..8c2f6919688 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java
@@ -47,7 +47,7 @@ public abstract class BinaryFooterOffsetsAbstractSelfTest 
extends GridCommonAbst
     @Override protected void beforeTest() throws Exception {
         super.beforeTest();
 
-        ctx = new BinaryContext(BinaryUtils.cachingMetadataHandler(), null, 
null, new NullLogger());
+        ctx = new BinaryContext(BinaryUtils.cachingMetadataHandler(), null, 
null, null, new NullLogger());
 
         marsh = new BinaryMarshaller();
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
index 4910370573d..345fb8f676f 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
@@ -4169,6 +4169,7 @@ public class BinaryMarshallerSelfTest extends 
AbstractBinaryArraysTest {
         BinaryContext ctx = new BinaryContext(
             BinaryUtils.cachingMetadataHandler(),
             iCfg.getIgniteInstanceName(),
+            iCfg.getClassLoader(),
             iCfg.getBinaryConfiguration(),
             new NullLogger()
         );
@@ -4235,6 +4236,7 @@ public class BinaryMarshallerSelfTest extends 
AbstractBinaryArraysTest {
         BinaryContext ctx = new BinaryContext(
             BinaryUtils.cachingMetadataHandler(),
             iCfg.getIgniteInstanceName(),
+            iCfg.getClassLoader(),
             iCfg.getBinaryConfiguration(),
             new NullLogger()
         );
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/GridBinaryMarshallerCtxDisabledSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/GridBinaryMarshallerCtxDisabledSelfTest.java
index 1caf9750c19..3e6a07bf618 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/GridBinaryMarshallerCtxDisabledSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/GridBinaryMarshallerCtxDisabledSelfTest.java
@@ -47,7 +47,7 @@ public class GridBinaryMarshallerCtxDisabledSelfTest extends 
GridCommonAbstractT
         BinaryMarshaller marsh = new BinaryMarshaller();
         marsh.setContext(new MarshallerContextWithNoStorage());
 
-        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, new 
NullLogger());
+        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null, new 
NullLogger());
 
         marsh.setBinaryContext(ctx, new IgniteConfiguration());
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/RawBinaryObjectExtractorTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/RawBinaryObjectExtractorTest.java
index f8f90cf94c3..3f8e04164f3 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/RawBinaryObjectExtractorTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/RawBinaryObjectExtractorTest.java
@@ -77,7 +77,7 @@ public class RawBinaryObjectExtractorTest extends 
GridCommonAbstractTest {
 
     /** */
     public static BinaryContext createTestBinaryContext() {
-        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null);
+        BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null, null);
 
         BinaryMarshaller marsh = new BinaryMarshaller();
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/platform/PlatformGetInternalCachesTask.java
 
b/modules/core/src/test/java/org/apache/ignite/platform/PlatformGetInternalCachesTask.java
index 4e5ed516f6d..c8682cc7411 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/platform/PlatformGetInternalCachesTask.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/platform/PlatformGetInternalCachesTask.java
@@ -68,7 +68,7 @@ public class PlatformGetInternalCachesTask extends 
ComputeTaskAdapter<Object, by
         @Override public byte[] execute() {
             IgniteEx ign = (IgniteEx)ignite;
 
-            BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null);
+            BinaryContext ctx = new 
BinaryContext(BinaryUtils.cachingMetadataHandler(), null, null, null, null);
 
             try (BinaryWriterEx writer
                      = BinaryUtils.writer(ctx, 
BinaryStreams.outputStream(512), null)) {
diff --git 
a/modules/core/src/test/java/org/apache/ignite/session/GridSessionCheckpointSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/session/GridSessionCheckpointSelfTest.java
index 012d53914e3..d72646557e5 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/session/GridSessionCheckpointSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/session/GridSessionCheckpointSelfTest.java
@@ -103,6 +103,7 @@ public class GridSessionCheckpointSelfTest extends 
GridSessionCheckpointAbstract
         BinaryContext ctx = new BinaryContext(
             BinaryUtils.cachingMetadataHandler(),
             cfg.getIgniteInstanceName(),
+            cfg.getClassLoader(),
             cfg.getBinaryConfiguration(),
             new NullLogger()
         );
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index b17db911372..3e2329f56bb 100755
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -2027,6 +2027,7 @@ public abstract class GridAbstractTest extends 
JUnitAssertAware {
         BinaryContext ctx = new BinaryContext(
             BinaryUtils.cachingMetadataHandler(),
             cfg.getIgniteInstanceName(),
+            cfg.getClassLoader(),
             cfg.getBinaryConfiguration(),
             new NullLogger()
         );
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestBinaryMarshaller.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestBinaryMarshaller.java
index a99de4a0243..21fef4d71c0 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestBinaryMarshaller.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestBinaryMarshaller.java
@@ -78,6 +78,7 @@ public class GridTestBinaryMarshaller {
         BinaryContext ctx = new BinaryContext(
             BinaryUtils.cachingMetadataHandler(),
             iCfg.getIgniteInstanceName(),
+            iCfg.getClassLoader(),
             iCfg.getBinaryConfiguration(),
             new NullLogger()
         );
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 7fd56fe3058..0a0de30dfcb 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
@@ -446,6 +446,7 @@ public class IgniteMock implements IgniteEx {
             ctx = new BinaryContext(
                 BinaryUtils.cachingMetadataHandler(),
                 configuration().getIgniteInstanceName(),
+                configuration().getClassLoader(),
                 configuration().getBinaryConfiguration(),
                 new NullLogger()
             ) {
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
index a358858cbde..d4668472873 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
@@ -251,7 +251,7 @@ public class IgniteTestResources {
 
         marsh.setContext(new MarshallerContextTestImpl());
         marsh.setBinaryContext(
-            new BinaryContext(BinaryUtils.cachingMetadataHandler(), null, 
null, new NullLogger()),
+            new BinaryContext(BinaryUtils.cachingMetadataHandler(), null, 
null, null, new NullLogger()),
             new IgniteConfiguration()
         );
 


Reply via email to