This is an automated email from the ASF dual-hosted git repository.
nizhikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 94d289b7adb [MINOR] Move IMMUTABLE_CLS to BinaryUtils (#12358)
94d289b7adb is described below
commit 94d289b7adb731c9ee81d9801dee08d871f8d3e7
Author: Nikolay <[email protected]>
AuthorDate: Thu Sep 18 15:19:32 2025 +0300
[MINOR] Move IMMUTABLE_CLS to BinaryUtils (#12358)
---
.../ignite/internal/binary/BinaryObjectImpl.java | 2 +-
.../apache/ignite/internal/binary/BinaryUtils.java | 27 +++++++++++++++++++
.../processors/cache/CacheObjectAdapter.java | 3 ++-
.../binary/CacheObjectBinaryProcessorImpl.java | 31 ----------------------
.../cacheobject/IgniteCacheObjectProcessor.java | 6 -----
.../cacheobject/UserCacheObjectImpl.java | 5 ++--
.../cacheobject/UserKeyCacheObjectImpl.java | 3 ++-
7 files changed, 34 insertions(+), 43 deletions(-)
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 aa92e05b1e6..a238b58f0f3 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
@@ -819,7 +819,7 @@ final class BinaryObjectImpl extends BinaryObjectExImpl
implements Externalizabl
* @return {@code True} need to copy value returned to user.
*/
private boolean needCopy(CacheObjectValueContext ctx) {
- return ctx.copyOnGet() && obj != null &&
!ctx.kernalContext().cacheObjects().immutable(obj);
+ return ctx.copyOnGet() && obj != null && !BinaryUtils.immutable(obj);
}
/**
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 643442d6aa8..7f84277ac53 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
@@ -79,6 +79,7 @@ import org.apache.ignite.internal.util.MutableSingletonList;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.lang.IgniteBiTuple;
+import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.platform.PlatformType;
import org.jetbrains.annotations.Nullable;
@@ -104,6 +105,9 @@ public class BinaryUtils {
/** */
public static final Map<Byte, Class<?>> FLAG_TO_CLASS;
+ /** Immutable classes. */
+ private static final Collection<Class<?>> IMMUTABLE_CLS = new HashSet<>();
+
/** */
public static final boolean USE_STR_SERIALIZATION_VER_2 =
IgniteSystemProperties.getBoolean(
IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2, false);
@@ -181,6 +185,19 @@ public class BinaryUtils {
* Static class initializer.
*/
static {
+ IMMUTABLE_CLS.add(String.class);
+ IMMUTABLE_CLS.add(Boolean.class);
+ IMMUTABLE_CLS.add(Byte.class);
+ IMMUTABLE_CLS.add(Short.class);
+ IMMUTABLE_CLS.add(Character.class);
+ IMMUTABLE_CLS.add(Integer.class);
+ IMMUTABLE_CLS.add(Long.class);
+ IMMUTABLE_CLS.add(Float.class);
+ IMMUTABLE_CLS.add(Double.class);
+ IMMUTABLE_CLS.add(UUID.class);
+ IMMUTABLE_CLS.add(IgniteUuid.class);
+ IMMUTABLE_CLS.add(BigDecimal.class);
+
Map<Class<?>, Byte> clsToFlag = new HashMap<>();
clsToFlag.put(Byte.class, GridBinaryMarshaller.BYTE);
@@ -3076,6 +3093,16 @@ public class BinaryUtils {
return ((BinaryReaderExImpl)reader).getOrCreateSchema().fieldId(order);
}
+ /**
+ * @param obj Value.
+ * @return {@code True} if object is of known immutable type.
+ */
+ public static boolean immutable(Object obj) {
+ assert obj != null;
+
+ return IMMUTABLE_CLS.contains(obj.getClass());
+ }
+
/**
* @param typeId Type ID.
* @param typeName Type name.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
index 4289588c073..f33004373a3 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
@@ -23,6 +23,7 @@ import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.pagemem.PageUtils;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -50,7 +51,7 @@ public abstract class CacheObjectAdapter implements
CacheObject, Externalizable
* @return {@code True} need to copy value returned to user.
*/
protected boolean needCopy(CacheObjectValueContext ctx) {
- return ctx.copyOnGet() && val != null &&
!ctx.kernalContext().cacheObjects().immutable(val);
+ return ctx.copyOnGet() && val != null && !BinaryUtils.immutable(val);
}
/**
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 651f9b8a38f..be621b75e73 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
@@ -19,12 +19,10 @@ package org.apache.ignite.internal.processors.cache.binary;
import java.io.File;
import java.io.Serializable;
-import java.math.BigDecimal;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
@@ -104,7 +102,6 @@ import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.lang.IgniteClosure;
import org.apache.ignite.lang.IgniteFuture;
-import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.spi.IgniteNodeValidationResult;
import org.apache.ignite.spi.discovery.DiscoveryDataBag;
import org.apache.ignite.spi.discovery.DiscoveryDataBag.GridDiscoveryData;
@@ -127,9 +124,6 @@ import static
org.apache.ignite.internal.util.typedef.internal.CU.affinityFieldN
* Binary processor implementation.
*/
public class CacheObjectBinaryProcessorImpl extends GridProcessorAdapter
implements IgniteCacheObjectProcessor {
- /** Immutable classes. */
- private static final Collection<Class<?>> IMMUTABLE_CLS = new HashSet<>();
-
/** @see IgniteSystemProperties#IGNITE_WAIT_SCHEMA_UPDATE */
public static final int DFLT_WAIT_SCHEMA_UPDATE = 30_000;
@@ -183,24 +177,6 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
/** Dummy {@code CacheObjectValueContext} used for mocking. */
private CacheObjectValueContext fakeCacheObjCtx;
- /*
- * Static initializer
- */
- static {
- IMMUTABLE_CLS.add(String.class);
- IMMUTABLE_CLS.add(Boolean.class);
- IMMUTABLE_CLS.add(Byte.class);
- IMMUTABLE_CLS.add(Short.class);
- IMMUTABLE_CLS.add(Character.class);
- IMMUTABLE_CLS.add(Integer.class);
- IMMUTABLE_CLS.add(Long.class);
- IMMUTABLE_CLS.add(Float.class);
- IMMUTABLE_CLS.add(Double.class);
- IMMUTABLE_CLS.add(UUID.class);
- IMMUTABLE_CLS.add(IgniteUuid.class);
- IMMUTABLE_CLS.add(BigDecimal.class);
- }
-
/**
* @param ctx Kernal context.
*/
@@ -391,13 +367,6 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
return binaryCtx.typeId(typeName);
}
- /** {@inheritDoc} */
- @Override public boolean immutable(Object obj) {
- assert obj != null;
-
- return IMMUTABLE_CLS.contains(obj.getClass());
- }
-
/** {@inheritDoc} */
@Override public void onContinuousProcessorStarted(GridKernalContext ctx) {
// No-op.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
index eb8311bff43..a1eae8f0848 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
@@ -208,12 +208,6 @@ public interface IgniteCacheObjectProcessor extends
GridProcessor {
public IncompleteCacheObject toKeyCacheObject(CacheObjectContext ctx,
ByteBuffer buf,
@Nullable IncompleteCacheObject incompleteObj) throws
IgniteCheckedException;
- /**
- * @param obj Value.
- * @return {@code True} if object is of known immutable type.
- */
- public boolean immutable(Object obj);
-
/**
* @return Ignite binary interface.
* @throws IgniteException If failed.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
index fb5a61f40e2..2a117a88f3f 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.processors.cacheobject;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectImpl;
import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
@@ -55,8 +56,6 @@ public class UserCacheObjectImpl extends CacheObjectImpl {
/** {@inheritDoc} */
@Override public CacheObject prepareForCache(CacheObjectValueContext ctx) {
try {
- IgniteCacheObjectProcessor proc =
ctx.kernalContext().cacheObjects();
-
if (valBytes == null)
valBytes = valueBytesFromValue(ctx);
@@ -66,7 +65,7 @@ public class UserCacheObjectImpl extends CacheObjectImpl {
ClassLoader ldr = p2pEnabled ?
IgniteUtils.detectClass(val).getClassLoader() :
val.getClass().getClassLoader();
- Object val = this.val != null && proc.immutable(this.val) ?
this.val : valueFromValueBytes(ctx, ldr);
+ Object val = this.val != null &&
BinaryUtils.immutable(this.val) ? this.val : valueFromValueBytes(ctx, ldr);
return new CacheObjectImpl(val, valBytes);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
index 223c18e31ed..0cdff88523b 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.processors.cacheobject;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
@@ -70,7 +71,7 @@ public class UserKeyCacheObjectImpl extends
KeyCacheObjectImpl {
try {
IgniteCacheObjectProcessor proc =
ctx.kernalContext().cacheObjects();
- if (!proc.immutable(val)) {
+ if (!BinaryUtils.immutable(val)) {
if (valBytes == null)
valBytes = proc.marshal(ctx, val);