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 ab0b24a06d4 IGNITE-26194 Move OptimizedMarshaller to
ignite-binary-impl (#12268)
ab0b24a06d4 is described below
commit ab0b24a06d4b1e90dcde72fe31702fa4f14e8dc1
Author: Nikolay <[email protected]>
AuthorDate: Tue Aug 19 15:42:20 2025 +0300
IGNITE-26194 Move OptimizedMarshaller to ignite-binary-impl (#12268)
---
.../ignite/internal/MarshallerPlatformIds.java | 0
.../marshaller/optimized/OptimizedMarshaller.java | 113 +++++
.../optimized/OptimizedMarshallerIdMapper.java | 0
.../ignite/marshaller/AbstractMarshaller.java | 9 -
.../AbstractNodeNameAwareMarshaller.java | 8 +-
.../org/apache/ignite/marshaller/Marshaller.java | 16 +
.../org/apache/ignite/marshaller/Marshallers.java | 25 ++
.../ignite/marshaller/MarshallersFactory.java | 14 +
.../optimized/OptimizedClassDescriptor.java | 6 +-
.../marshaller/optimized/OptimizedFieldType.java | 0
.../optimized/OptimizedMarshallerImpl.java} | 64 +--
...imizedMarshallerInaccessibleClassException.java | 0
.../optimized/OptimizedMarshallerUtils.java | 7 +-
.../optimized/OptimizedObjectInputStream.java | 20 +-
.../optimized/OptimizedObjectOutputStream.java | 4 +-
.../OptimizedObjectPooledStreamRegistry.java | 6 +-
.../OptimizedObjectSharedStreamRegistry.java | 8 +-
.../optimized/OptimizedObjectStreamRegistry.java | 0
.../ignite/marshaller/MarshallersFactoryImpl.java | 12 +
.../ignite/IgniteCommonsSystemProperties.java | 24 +
.../main/java/org/apache/ignite/IgniteLogger.java | 0
.../IgniteInterruptedCheckedException.java | 0
.../apache/ignite/internal/util/CommonUtils.java | 481 ++++++++++++++++++++-
.../ignite/internal/util/GridHandleTable.java | 0
.../ignite/internal/util/GridLogThrottle.java | 20 +-
.../ignite/internal/util/io/GridDataInput.java | 0
.../ignite/internal/util/io/GridDataOutput.java | 0
.../ignite/internal/util/typedef/internal/LT.java | 0
.../org/apache/ignite/IgniteSystemProperties.java | 24 -
.../org/apache/ignite/internal/IgniteKernal.java | 7 +-
.../ignite/internal/MarshallerContextImpl.java | 2 +-
.../ignite/internal/binary/BinaryContext.java | 2 +-
.../optimized/GridClientOptimizedMarshaller.java | 5 +-
.../apache/ignite/internal/util/IgniteUtils.java | 468 +-------------------
.../apache/ignite/marshaller/MarshallerUtils.java | 11 -
.../ignite/spi/discovery/tcp/TcpDiscoverySpi.java | 3 +-
.../ignite/stream/socket/SocketStreamer.java | 3 +-
.../GridDiscoveryManagerAttributesSelfTest.java | 4 +-
.../optimized/OptimizedMarshallerEnumSelfTest.java | 3 +-
.../OptimizedMarshallerPooledSelfTest.java | 5 +-
.../optimized/OptimizedMarshallerSelfTest.java | 3 +-
...edMarshallerSerialPersistentFieldsSelfTest.java | 3 +-
.../optimized/OptimizedMarshallerTest.java | 3 +-
.../optimized/OptimizedObjectStreamSelfTest.java | 9 +-
...rMetricsSnapshotSerializeCompatibilityTest.java | 3 +-
.../internal/util/io/GridUnsafeDataInput.java | 9 +-
.../internal/util/io/GridUnsafeDataOutput.java | 13 +-
47 files changed, 779 insertions(+), 638 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerPlatformIds.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/MarshallerPlatformIds.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/MarshallerPlatformIds.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/MarshallerPlatformIds.java
diff --git
a/modules/binary/api/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
new file mode 100644
index 00000000000..e4733564f76
--- /dev/null
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import org.apache.ignite.marshaller.Marshaller;
+
+/**
+ * Optimized implementation of {@link org.apache.ignite.marshaller.Marshaller}.
+ * Unlike {@link org.apache.ignite.marshaller.jdk.JdkMarshaller},
+ * which is based on standard {@link ObjectOutputStream}, this marshaller does
not
+ * enforce that all serialized objects implement {@link Serializable}
interface. It is also
+ * about 20 times faster as it removes lots of serialization overhead that
exists in
+ * default JDK implementation.
+ * <p>
+ * {@code OptimizedMarshaller} is tested only on Java HotSpot VM on other VMs
+ * it could yield unexpected results. It is the default marshaller on Java
HotSpot VMs
+ * and will be used if no other marshaller was explicitly configured.
+ * <p>
+ * <h1 class="header">Configuration</h1>
+ * <h2 class="header">Mandatory</h2>
+ * This marshaller has no mandatory configuration parameters.
+ * <h2 class="header">Java Example</h2>
+ * <pre name="code" class="java">
+ * OptimizedMarshaller marshaller = new OptimizedMarshaller();
+ *
+ * // Enforce Serializable interface.
+ * marshaller.setRequireSerializable(true);
+ *
+ * IgniteConfiguration cfg = new IgniteConfiguration();
+ *
+ * // Override marshaller.
+ * cfg.setMarshaller(marshaller);
+ *
+ * // Starts grid.
+ * G.start(cfg);
+ * </pre>
+ * <h2 class="header">Spring Example</h2>
+ * GridOptimizedMarshaller can be configured from Spring XML configuration
file:
+ * <pre name="code" class="xml">
+ * <bean id="grid.custom.cfg"
class="org.apache.ignite.configuration.IgniteConfiguration" singleton="true">
+ * ...
+ * <property name="marshaller">
+ * <bean class="OptimizedMarshaller">
+ * <property name="requireSerializable">true</property>
+ * </bean>
+ * </property>
+ * ...
+ * </bean>
+ * </pre>
+ * <p>
+ * <img src="http://ignite.apache.org/images/spring-small.png">
+ * <br>
+ * For information about Spring framework visit <a
href="http://www.springframework.org/">www.springframework.org</a>
+ */
+public interface OptimizedMarshaller extends Marshaller {
+ /**
+ * Sets whether marshaller should require {@link Serializable} interface
or not.
+ *
+ * @param requireSer Whether to require {@link Serializable}.
+ * @return {@code this} for chaining.
+ */
+ public OptimizedMarshaller setRequireSerializable(boolean requireSer);
+
+ /**
+ * Sets ID mapper.
+ *
+ * @param mapper ID mapper.
+ * @return {@code this} for chaining.
+ */
+ public OptimizedMarshaller setIdMapper(OptimizedMarshallerIdMapper mapper);
+
+ /**
+ * Specifies size of cached object streams used by marshaller. Object
streams are cached for
+ * performance reason to avoid costly recreation for every serialization
routine. If {@code 0} (default),
+ * pool is not used and each thread has its own cached object stream which
it keeps reusing.
+ * <p>
+ * Since each stream has an internal buffer, creating a stream for each
thread can lead to
+ * high memory consumption if many large messages are marshalled or
unmarshalled concurrently.
+ * Consider using pool in this case. This will limit number of streams
that can be created and,
+ * therefore, decrease memory consumption.
+ * <p>
+ * NOTE: Using streams pool can decrease performance since streams will be
shared between
+ * different threads which will lead to more frequent context switching.
+ *
+ * @param poolSize Streams pool size. If {@code 0}, pool is not used.
+ * @return {@code this} for chaining.
+ */
+ public OptimizedMarshaller setPoolSize(int poolSize);
+
+ /**
+ * Clears the optimized class descriptors cache. This is essential for the
clients
+ * on disconnect in order to make them register their user types again
(server nodes may
+ * lose previously registered types).
+ */
+ public void clearClassDescriptorsCache();
+}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerIdMapper.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerIdMapper.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerIdMapper.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerIdMapper.java
diff --git
a/modules/binary/api/src/main/java/org/apache/ignite/marshaller/AbstractMarshaller.java
b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/AbstractMarshaller.java
index 032e758f853..ee1e3c493fd 100644
---
a/modules/binary/api/src/main/java/org/apache/ignite/marshaller/AbstractMarshaller.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/AbstractMarshaller.java
@@ -30,15 +30,6 @@ public abstract class AbstractMarshaller implements
Marshaller {
/** Context. */
protected MarshallerContext ctx;
- /**
- * Undeployment callback invoked when class loader is being undeployed.
- *
- * Some marshallers may want to clean their internal state that uses the
undeployed class loader somehow.
- *
- * @param ldr Class loader being undeployed.
- */
- public abstract void onUndeploy(ClassLoader ldr);
-
/**
* @return Marshaller context.
*/
diff --git
a/modules/binary/api/src/main/java/org/apache/ignite/marshaller/AbstractNodeNameAwareMarshaller.java
b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/AbstractNodeNameAwareMarshaller.java
index 6f8150f09fb..ccf32d80a2b 100644
---
a/modules/binary/api/src/main/java/org/apache/ignite/marshaller/AbstractNodeNameAwareMarshaller.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/AbstractNodeNameAwareMarshaller.java
@@ -33,12 +33,8 @@ public abstract class AbstractNodeNameAwareMarshaller
extends AbstractMarshaller
/** Node name. */
private volatile String nodeName = CommonUtils.LOC_IGNITE_NAME_EMPTY;
- /**
- * Set node name.
- *
- * @param nodeName Node name.
- */
- public void nodeName(@Nullable String nodeName) {
+ /** {@inheritDoc} */
+ @Override public void nodeName(@Nullable String nodeName) {
if (!nodeNameSet) {
this.nodeName = nodeName;
diff --git
a/modules/binary/api/src/main/java/org/apache/ignite/marshaller/Marshaller.java
b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/Marshaller.java
index 7bc328ef2b8..6112c6fc188 100644
---
a/modules/binary/api/src/main/java/org/apache/ignite/marshaller/Marshaller.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/Marshaller.java
@@ -73,6 +73,13 @@ public interface Marshaller {
*/
public void setContext(MarshallerContext ctx);
+ /**
+ * Set node name.
+ *
+ * @param nodeName Node name.
+ */
+ public void nodeName(@Nullable String nodeName);
+
/**
* Marshals object to the output stream. This method should not close
* given output stream.
@@ -114,4 +121,13 @@ public interface Marshaller {
* @throws IgniteCheckedException If unmarshalling failed.
*/
public <T> T unmarshal(byte[] arr, @Nullable ClassLoader clsLdr) throws
IgniteCheckedException;
+
+ /**
+ * Undeployment callback invoked when class loader is being undeployed.
+ *
+ * Some marshallers may want to clean their internal state that uses the
undeployed class loader somehow.
+ *
+ * @param ldr Class loader being undeployed.
+ */
+ public void onUndeploy(ClassLoader ldr);
}
diff --git
a/modules/binary/api/src/main/java/org/apache/ignite/marshaller/Marshallers.java
b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/Marshallers.java
index ef54a1452d9..d590e1aaf8d 100644
---
a/modules/binary/api/src/main/java/org/apache/ignite/marshaller/Marshallers.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/Marshallers.java
@@ -17,13 +17,18 @@
package org.apache.ignite.marshaller;
+import java.io.Serializable;
import java.util.Iterator;
+import org.apache.ignite.IgniteCommonsSystemProperties;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
import org.jetbrains.annotations.Nullable;
+import static
org.apache.ignite.IgniteCommonsSystemProperties.IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID;
+
/**
* Factory to create implementation of {@link Marshaller}.
*/
@@ -31,6 +36,10 @@ public class Marshallers {
/** Flag whether class caching should be used by the current thread. */
public static final ThreadLocal<Boolean> USE_CACHE =
ThreadLocal.withInitial(() -> Boolean.TRUE);
+ /** Use default {@code serialVersionUID} for {@link Serializable} classes.
*/
+ public static final boolean USE_DFLT_SUID =
+
IgniteCommonsSystemProperties.getBoolean(IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID,
false);
+
/** Streams factory implementation. */
private static final MarshallersFactory factory;
@@ -57,4 +66,20 @@ public class Marshallers {
public static JdkMarshaller jdk(@Nullable IgnitePredicate<String>
clsFilter) {
return factory.jdk(clsFilter);
}
+
+ /** @return Optimized marshaller instance. */
+ public static OptimizedMarshaller optimized() {
+ return factory.optimized();
+ }
+
+ /**
+ * Creates new marshaller providing whether it should
+ * require {@link Serializable} interface or not.
+ *
+ * @param requireSer Whether to require {@link Serializable}.
+ * @return Optimized marshaller instance.
+ */
+ public static OptimizedMarshaller optimized(boolean requireSer) {
+ return factory.optimized(requireSer);
+ }
}
diff --git
a/modules/binary/api/src/main/java/org/apache/ignite/marshaller/MarshallersFactory.java
b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/MarshallersFactory.java
index 4500c703eb3..0c7809213ae 100644
---
a/modules/binary/api/src/main/java/org/apache/ignite/marshaller/MarshallersFactory.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/MarshallersFactory.java
@@ -17,7 +17,9 @@
package org.apache.ignite.marshaller;
+import java.io.Serializable;
import java.util.ServiceLoader;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
@@ -39,4 +41,16 @@ public interface MarshallersFactory {
* @return Filtered instance of {@link JdkMarshaller}.
*/
public JdkMarshaller jdk(@Nullable IgnitePredicate<String> clsFilter);
+
+ /** @return Optimized marshaller instance. */
+ public OptimizedMarshaller optimized();
+
+ /**
+ * Creates new marshaller providing whether it should
+ * require {@link Serializable} interface or not.
+ *
+ * @param requireSer Whether to require {@link Serializable}.
+ * @return Optimized marshaller instance.
+ */
+ public OptimizedMarshaller optimized(boolean requireSer);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
similarity index 99%
rename from
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
index 67747d00807..4dee1dff695 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
@@ -45,8 +45,8 @@ import java.util.Map;
import java.util.Properties;
import java.util.UUID;
import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridUnsafe;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.MarshallerContext;
import org.apache.ignite.marshaller.MarshallerExclusions;
import org.apache.ignite.marshaller.Marshallers;
@@ -89,7 +89,7 @@ import static
org.apache.ignite.internal.marshaller.optimized.OptimizedMarshalle
import static
org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.STR;
import static
org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.UUID;
import static
org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.computeSerialVersionUid;
-import static org.apache.ignite.internal.util.IgniteUtils.isLambda;
+import static org.apache.ignite.internal.util.CommonUtils.isLambda;
/**
* Class descriptor.
@@ -1000,7 +1000,7 @@ class OptimizedClassDescriptor {
ClassFields(List<FieldInfo> fields) {
this.fields = fields;
- nameToIndex = U.newHashMap(fields.size());
+ nameToIndex = CommonUtils.newHashMap(fields.size());
for (int i = 0; i < fields.size(); ++i)
nameToIndex.put(fields.get(i).name(), i);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedFieldType.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedFieldType.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedFieldType.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedFieldType.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerImpl.java
similarity index 81%
rename from
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerImpl.java
index f8738a6e58a..9c5549a29c6 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerImpl.java
@@ -26,16 +26,13 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
-import org.apache.ignite.IgniteSystemProperties;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller;
import org.apache.ignite.marshaller.Marshallers;
import org.jetbrains.annotations.Nullable;
import sun.misc.Unsafe;
-import static
org.apache.ignite.IgniteSystemProperties.IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID;
-
/**
* Optimized implementation of {@link org.apache.ignite.marshaller.Marshaller}.
* Unlike {@link org.apache.ignite.marshaller.jdk.JdkMarshaller},
@@ -84,11 +81,7 @@ import static
org.apache.ignite.IgniteSystemProperties.IGNITE_OPTIMIZED_MARSHALL
* <br>
* For information about Spring framework visit <a
href="http://www.springframework.org/">www.springframework.org</a>
*/
-public class OptimizedMarshaller extends AbstractNodeNameAwareMarshaller {
- /** Use default {@code serialVersionUID} for {@link Serializable} classes.
*/
- public static final boolean USE_DFLT_SUID =
-
IgniteSystemProperties.getBoolean(IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID,
false);
-
+public class OptimizedMarshallerImpl extends AbstractNodeNameAwareMarshaller
implements OptimizedMarshaller {
/** Default class loader. */
private final ClassLoader dfltClsLdr = getClass().getClassLoader();
@@ -112,7 +105,7 @@ public class OptimizedMarshaller extends
AbstractNodeNameAwareMarshaller {
*
* @throws IgniteException If this marshaller is not supported on the
current JVM.
*/
- public OptimizedMarshaller() {
+ public OptimizedMarshallerImpl() {
if (!available())
throw new IgniteException("Using OptimizedMarshaller on
unsupported JVM version (some of " +
"JVM-private APIs required for the marshaller to work are
missing).");
@@ -124,51 +117,26 @@ public class OptimizedMarshaller extends
AbstractNodeNameAwareMarshaller {
*
* @param requireSer Whether to require {@link Serializable}.
*/
- public OptimizedMarshaller(boolean requireSer) {
+ public OptimizedMarshallerImpl(boolean requireSer) {
this.requireSer = requireSer;
}
- /**
- * Sets whether marshaller should require {@link Serializable} interface
or not.
- *
- * @param requireSer Whether to require {@link Serializable}.
- * @return {@code this} for chaining.
- */
- public OptimizedMarshaller setRequireSerializable(boolean requireSer) {
+ /** {@inheritDoc} */
+ @Override public OptimizedMarshaller setRequireSerializable(boolean
requireSer) {
this.requireSer = requireSer;
return this;
}
- /**
- * Sets ID mapper.
- *
- * @param mapper ID mapper.
- * @return {@code this} for chaining.
- */
- public OptimizedMarshaller setIdMapper(OptimizedMarshallerIdMapper mapper)
{
+ /** {@inheritDoc} */
+ @Override public OptimizedMarshaller
setIdMapper(OptimizedMarshallerIdMapper mapper) {
this.mapper = mapper;
return this;
}
- /**
- * Specifies size of cached object streams used by marshaller. Object
streams are cached for
- * performance reason to avoid costly recreation for every serialization
routine. If {@code 0} (default),
- * pool is not used and each thread has its own cached object stream which
it keeps reusing.
- * <p>
- * Since each stream has an internal buffer, creating a stream for each
thread can lead to
- * high memory consumption if many large messages are marshalled or
unmarshalled concurrently.
- * Consider using pool in this case. This will limit number of streams
that can be created and,
- * therefore, decrease memory consumption.
- * <p>
- * NOTE: Using streams pool can decrease performance since streams will be
shared between
- * different threads which will lead to more frequent context switching.
- *
- * @param poolSize Streams pool size. If {@code 0}, pool is not used.
- * @return {@code this} for chaining.
- */
- public OptimizedMarshaller setPoolSize(int poolSize) {
+ /** {@inheritDoc} */
+ @Override public OptimizedMarshaller setPoolSize(int poolSize) {
registry = poolSize > 0 ?
new OptimizedObjectPooledStreamRegistry(poolSize) :
new OptimizedObjectSharedStreamRegistry();
@@ -337,20 +305,16 @@ public class OptimizedMarshaller extends
AbstractNodeNameAwareMarshaller {
clsMap.remove(cls);
}
- U.clearClassCache(ldr);
+ CommonUtils.clearClassCache(ldr);
}
- /**
- * Clears the optimized class descriptors cache. This is essential for the
clients
- * on disconnect in order to make them register their user types again
(server nodes may
- * lose previously registered types).
- */
- public void clearClassDescriptorsCache() {
+ /** {@inheritDoc} */
+ @Override public void clearClassDescriptorsCache() {
clsMap.clear();
}
/** {@inheritDoc} */
@Override public String toString() {
- return S.toString(OptimizedMarshaller.class, this);
+ return S.toString(OptimizedMarshallerImpl.class, this);
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerInaccessibleClassException.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerInaccessibleClassException.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerInaccessibleClassException.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerInaccessibleClassException.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerUtils.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerUtils.java
similarity index 98%
rename from
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerUtils.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerUtils.java
index 8581b322ea9..1c9836956ad 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerUtils.java
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerUtils.java
@@ -30,10 +30,11 @@ import java.util.List;
import java.util.concurrent.ConcurrentMap;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.MarshallerContext;
+import org.apache.ignite.marshaller.Marshallers;
import org.jetbrains.annotations.NotNull;
import static org.apache.ignite.internal.MarshallerPlatformIds.JAVA_ID;
@@ -300,7 +301,7 @@ class OptimizedMarshallerUtils {
throw new IOException("Failed to resolve class for ID: " + typeId,
e);
}
- Class cls = U.forName(clsName, ldr, null);
+ Class cls = CommonUtils.forName(clsName, ldr, null,
Marshallers.USE_CACHE.get());
OptimizedClassDescriptor desc = clsMap.get(cls);
@@ -375,7 +376,7 @@ class OptimizedMarshallerUtils {
throw new IOException(e);
}
- if (OptimizedMarshaller.USE_DFLT_SUID)
+ if (Marshallers.USE_DFLT_SUID)
return
(short)ObjectStreamClass.lookup(cls).getSerialVersionUID();
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
similarity index 97%
rename from
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
index d3566905c3d..08e0a367217 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
@@ -42,11 +42,12 @@ import java.util.Properties;
import java.util.UUID;
import java.util.concurrent.ConcurrentMap;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.io.GridDataInput;
import org.apache.ignite.internal.util.typedef.internal.SB;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.MarshallerContext;
+import org.apache.ignite.marshaller.Marshallers;
import static
org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.ARRAY_LIST;
import static
org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.BOOLEAN;
@@ -336,16 +337,21 @@ class OptimizedObjectInputStream extends
ObjectInputStream {
InvocationHandler ih = (InvocationHandler)readObject();
- return Proxy.newProxyInstance(clsLdr != null ? clsLdr :
U.gridClassLoader(), intfs, ih);
+ return Proxy.newProxyInstance(clsLdr != null ? clsLdr :
CommonUtils.gridClassLoader(), intfs, ih);
case ENUM:
case EXTERNALIZABLE:
case SERIALIZABLE:
int typeId = readInt();
- OptimizedClassDescriptor desc = typeId == 0 ?
- classDescriptor(clsMap, U.forName(readUTF(), clsLdr,
ctx.classNameFilter()), useCache, ctx, mapper) :
- classDescriptor(clsMap, typeId, clsLdr, useCache, ctx,
mapper);
+ OptimizedClassDescriptor desc = typeId == 0
+ ? classDescriptor(
+ clsMap,
+ CommonUtils.forName(readUTF(), clsLdr,
ctx.classNameFilter(), useCache),
+ useCache,
+ ctx,
+ mapper)
+ : classDescriptor(clsMap, typeId, clsLdr, useCache, ctx,
mapper);
curCls = desc.describedClass();
@@ -380,7 +386,7 @@ class OptimizedObjectInputStream extends ObjectInputStream {
private Class<?> readClass() throws ClassNotFoundException, IOException {
int compTypeId = readInt();
- return compTypeId == 0 ? U.forName(readUTF(), clsLdr, null, useCache) :
+ return compTypeId == 0 ? CommonUtils.forName(readUTF(), clsLdr, null,
useCache) :
classDescriptor(clsMap, compTypeId, clsLdr, useCache, ctx,
mapper).describedClass();
}
@@ -539,7 +545,7 @@ class OptimizedObjectInputStream extends ObjectInputStream {
// Must have 'Class.forName()' instead of clsLoader.loadClass()
// due to weird ClassNotFoundExceptions for arrays of classes
// in certain cases.
- return U.forName(desc.getName(), clsLdr, ctx.classNameFilter());
+ return CommonUtils.forName(desc.getName(), clsLdr,
ctx.classNameFilter(), Marshallers.USE_CACHE.get());
}
/**
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectOutputStream.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectOutputStream.java
similarity index 99%
rename from
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectOutputStream.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectOutputStream.java
index d3ce371324a..86e29e16298 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectOutputStream.java
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectOutputStream.java
@@ -39,10 +39,10 @@ import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentMap;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridHandleTable;
import org.apache.ignite.internal.util.io.GridDataOutput;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.marshaller.MarshallerContext;
import org.apache.ignite.marshaller.Marshallers;
@@ -182,7 +182,7 @@ public class OptimizedObjectOutputStream extends
ObjectOutputStream {
if (obj == null)
writeByte(NULL);
else {
- if (obj instanceof Throwable && !(obj instanceof Externalizable)
|| U.isEnum(obj.getClass())) {
+ if (obj instanceof Throwable && !(obj instanceof Externalizable)
|| CommonUtils.isEnum(obj.getClass())) {
// Avoid problems with differing Enum objects or Enum
implementation class deadlocks.
writeByte(JDK);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectPooledStreamRegistry.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectPooledStreamRegistry.java
similarity index 95%
rename from
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectPooledStreamRegistry.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectPooledStreamRegistry.java
index 632be9e577d..1ff85173d9d 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectPooledStreamRegistry.java
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectPooledStreamRegistry.java
@@ -20,7 +20,7 @@ package org.apache.ignite.internal.marshaller.optimized;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import org.apache.ignite.internal.IgniteInterruptedCheckedException;
-import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.util.CommonUtils;
/**
*
@@ -71,7 +71,7 @@ public class OptimizedObjectPooledStreamRegistry extends
OptimizedObjectStreamRe
/** {@inheritDoc} */
@Override void closeOut(OptimizedObjectOutputStream out) {
- U.close(out, null);
+ CommonUtils.close(out, null);
boolean b = outPool.offer(out);
@@ -80,7 +80,7 @@ public class OptimizedObjectPooledStreamRegistry extends
OptimizedObjectStreamRe
/** {@inheritDoc} */
@Override void closeIn(OptimizedObjectInputStream in) {
- U.close(in, null);
+ CommonUtils.close(in, null);
boolean b = inPool.offer(in);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectSharedStreamRegistry.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectSharedStreamRegistry.java
similarity index 95%
rename from
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectSharedStreamRegistry.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectSharedStreamRegistry.java
index c938ccbe795..c27f2b0b517 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectSharedStreamRegistry.java
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectSharedStreamRegistry.java
@@ -17,7 +17,7 @@
package org.apache.ignite.internal.marshaller.optimized;
-import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.util.CommonUtils;
/**
*
@@ -38,7 +38,7 @@ public class OptimizedObjectSharedStreamRegistry extends
OptimizedObjectStreamRe
/** {@inheritDoc} */
@Override void closeOut(OptimizedObjectOutputStream out) {
- U.close(out, null);
+ CommonUtils.close(out, null);
StreamHolder holder = holders.get();
@@ -48,7 +48,7 @@ public class OptimizedObjectSharedStreamRegistry extends
OptimizedObjectStreamRe
/** {@inheritDoc} */
@Override void closeIn(OptimizedObjectInputStream in) {
- U.close(in, null);
+ CommonUtils.close(in, null);
StreamHolder holder = holders.get();
@@ -62,7 +62,7 @@ public class OptimizedObjectSharedStreamRegistry extends
OptimizedObjectStreamRe
* @param in Object input stream.
*/
void closeNotCachedIn(OptimizedObjectInputStream in) {
- U.close(in, null);
+ CommonUtils.close(in, null);
StreamHolder holder = holders.get();
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamRegistry.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamRegistry.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamRegistry.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamRegistry.java
diff --git
a/modules/binary/impl/src/main/java/org/apache/ignite/marshaller/MarshallersFactoryImpl.java
b/modules/binary/impl/src/main/java/org/apache/ignite/marshaller/MarshallersFactoryImpl.java
index 04a1224f8b3..e75f8cab375 100644
---
a/modules/binary/impl/src/main/java/org/apache/ignite/marshaller/MarshallersFactoryImpl.java
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/marshaller/MarshallersFactoryImpl.java
@@ -17,6 +17,8 @@
package org.apache.ignite.marshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerImpl;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
import org.apache.ignite.marshaller.jdk.JdkMarshallerImpl;
@@ -38,4 +40,14 @@ public class MarshallersFactoryImpl implements
MarshallersFactory {
@Override public JdkMarshaller jdk(@Nullable IgnitePredicate<String>
clsFilter) {
return clsFilter == null ? INSTANCE : new JdkMarshallerImpl(clsFilter);
}
+
+ /** {@inheritDoc} */
+ @Override public OptimizedMarshaller optimized() {
+ return new OptimizedMarshallerImpl();
+ }
+
+ /** {@inheritDoc} */
+ @Override public OptimizedMarshaller optimized(boolean requireSer) {
+ return new OptimizedMarshallerImpl(requireSer);
+ }
}
diff --git
a/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
b/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
index b0957c244c5..64dcfd2274a 100644
---
a/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
+++
b/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
@@ -17,11 +17,14 @@
package org.apache.ignite;
+import java.io.Serializable;
+import org.apache.ignite.internal.util.GridLogThrottle;
import org.jetbrains.annotations.Nullable;
import static
org.apache.ignite.internal.util.CommonUtils.DFLT_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE;
import static
org.apache.ignite.internal.util.CommonUtils.DFLT_MARSHAL_BUFFERS_RECHECK;
import static
org.apache.ignite.internal.util.CommonUtils.DFLT_MEMORY_PER_BYTE_COPY_THRESHOLD;
+import static
org.apache.ignite.internal.util.GridLogThrottle.DFLT_LOG_THROTTLE_CAPACITY;
import static
org.apache.ignite.internal.util.tostring.GridToStringBuilder.DFLT_TO_STRING_COLLECTION_LIMIT;
import static
org.apache.ignite.internal.util.tostring.GridToStringBuilder.DFLT_TO_STRING_INCLUDE_SENSITIVE;
import static
org.apache.ignite.internal.util.tostring.GridToStringBuilder.DFLT_TO_STRING_MAX_LENGTH;
@@ -85,6 +88,27 @@ public class IgniteCommonsSystemProperties {
type = Integer.class, defaults = "" +
DFLT_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE)
public static final String IGNITE_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE =
"IGNITE_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE";
+ /**
+ * Manages {@code OptimizedMarshaller} behavior of {@code
serialVersionUID} computation for
+ * {@link Serializable} classes.
+ */
+ @SystemProperty("Manages OptimizedMarshaller behavior of serialVersionUID
computation " +
+ "for Serializable classes")
+ public static final String IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID =
+ "IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID";
+
+ /**
+ * When set to {@code true}, warnings that are intended for development
environments and not for production
+ * (such as coding mistakes in code using Ignite) will not be logged.
+ */
+ @SystemProperty("Enables development environments warnings")
+ public static final String IGNITE_DEV_ONLY_LOGGING_DISABLED =
"IGNITE_DEV_ONLY_LOGGING_DISABLED";
+
+ /** Max amount of remembered errors for {@link GridLogThrottle}. */
+ @SystemProperty(value = "Max amount of remembered errors for
GridLogThrottle", type = Integer.class,
+ defaults = "" + DFLT_LOG_THROTTLE_CAPACITY)
+ public static final String IGNITE_LOG_THROTTLE_CAPACITY =
"IGNITE_LOG_THROTTLE_CAPACITY";
+
/**
* @param enumCls Enum type.
* @param name Name of the system property or environment variable.
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteLogger.java
b/modules/commons/src/main/java/org/apache/ignite/IgniteLogger.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/IgniteLogger.java
rename to modules/commons/src/main/java/org/apache/ignite/IgniteLogger.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInterruptedCheckedException.java
b/modules/commons/src/main/java/org/apache/ignite/internal/IgniteInterruptedCheckedException.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/IgniteInterruptedCheckedException.java
rename to
modules/commons/src/main/java/org/apache/ignite/internal/IgniteInterruptedCheckedException.java
diff --git
a/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java
b/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java
index 2b1c7ccc6e3..0a8f4174100 100644
---
a/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java
+++
b/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java
@@ -21,11 +21,22 @@ import java.io.DataInput;
import java.io.DataOutput;
import java.io.Externalizable;
import java.io.IOException;
+import java.io.PrintStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.net.DatagramSocket;
+import java.net.Socket;
+import java.net.SocketException;
+import java.net.URLClassLoader;
+import java.nio.channels.ClosedChannelException;
+import java.nio.channels.SelectionKey;
+import java.nio.channels.Selector;
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
import java.util.ServiceLoader;
@@ -35,9 +46,13 @@ import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.TimeUnit;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteCommonsSystemProperties;
+import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.processors.cache.CacheClassLoaderMarker;
import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.A;
+import org.apache.ignite.internal.util.typedef.internal.LT;
+import org.apache.ignite.internal.util.typedef.internal.SB;
import org.apache.ignite.lang.IgnitePredicate;
import org.jetbrains.annotations.Nullable;
@@ -45,6 +60,10 @@ import org.jetbrains.annotations.Nullable;
* Collection of utility methods used in 'ignite-commons' and throughout the
system.
*/
public abstract class CommonUtils {
+ /** Dev only logging disabled. */
+ private static final boolean devOnlyLogDisabled =
+
IgniteCommonsSystemProperties.getBoolean(IgniteCommonsSystemProperties.IGNITE_DEV_ONLY_LOGGING_DISABLED);
+
/**
* The maximum size of array to allocate.
* Some VMs reserve some header words in an array.
@@ -100,6 +119,17 @@ public abstract class CommonUtils {
}
};
+ /** Ignite package. */
+ public static final String IGNITE_PKG = "org.apache.ignite.";
+
+ /**
+ * Short date format pattern for log messages in "quiet" mode.
+ * Only time is included since we don't expect "quiet" mode to be used
+ * for longer runs.
+ */
+ public static final DateTimeFormatter SHORT_DATE_FMT =
+
DateTimeFormatter.ofPattern("HH:mm:ss").withZone(ZoneId.systemDefault());
+
/** Class loader used to load Ignite. */
private static final ClassLoader gridClassLoader =
CommonUtils.class.getClassLoader();
@@ -561,7 +591,7 @@ public abstract class CommonUtils {
}
/**
- * Tests whether given class is loadable by provided class loader.
+ * Tests whether given class is loadable with provided class loader.
*
* @param clsName Class name to test.
* @param ldr Class loader to test with. If {@code null} - we'll use
system class loader instead.
@@ -587,7 +617,7 @@ public abstract class CommonUtils {
}
/**
- * Gets a class for a given name if it can be loaded or a given default
class otherwise.
+ * Gets class for the given name if it can be loaded or default given
class.
*
* @param cls Class.
* @param dflt Default class to return.
@@ -598,7 +628,7 @@ public abstract class CommonUtils {
}
/**
- * Gets a class for a given name if it can be loaded or a given default
class otherwise.
+ * Gets class for the given name if it can be loaded or default given
class.
*
* @param cls Class.
* @param dflt Default class to return.
@@ -740,4 +770,449 @@ public abstract class CommonUtils {
return clsName.substring(0, idx0 >= 0 ? idx0 : idx1);
}
+
+ /**
+ * Returns {@code true} if class is a lambda.
+ *
+ * @param objectClass Class.
+ * @return {@code true} if class is a lambda, {@code false} otherwise.
+ */
+ public static boolean isLambda(Class<?> objectClass) {
+ return !objectClass.isPrimitive() && !objectClass.isArray()
+ // Order is crucial here, isAnonymousClass and isLocalClass may
fail if
+ // class' outer class was loaded with different classloader.
+ && objectClass.isSynthetic()
+ && !objectClass.isAnonymousClass() && !objectClass.isLocalClass()
+ && classCannotBeLoadedByName(objectClass);
+ }
+
+ /**
+ * Returns {@code true} if class can not be loaded by name.
+ *
+ * @param objectClass Class.
+ * @return {@code true} if class can not be loaded by name, {@code false}
otherwise.
+ */
+ public static boolean classCannotBeLoadedByName(Class<?> objectClass) {
+ try {
+ Class.forName(objectClass.getName());
+ return false;
+ }
+ catch (ClassNotFoundException e) {
+ return true;
+ }
+ }
+
+ /**
+ * Creates new {@link HashMap} with expected size.
+ *
+ * @param expSize Expected size of created map.
+ * @param <K> Type of map keys.
+ * @param <V> Type of map values.
+ * @return New map.
+ */
+ public static <K, V> HashMap<K, V> newHashMap(int expSize) {
+ return new HashMap<>(capacity(expSize));
+ }
+
+ /**
+ * Closes given resource logging possible checked exception.
+ *
+ * @param rsrc Resource to close. If it's {@code null} - it's no-op.
+ * @param log Logger to log possible checked exception with (optional).
+ */
+ public static void close(@Nullable AutoCloseable rsrc, @Nullable
IgniteLogger log) {
+ if (rsrc != null) {
+ try {
+ rsrc.close();
+ }
+ catch (Exception e) {
+ warn(log, "Failed to close resource: " + e.getMessage(), e);
+ }
+ }
+ }
+
+ /**
+ * Closes given socket logging possible checked exception.
+ *
+ * @param sock Socket to close. If it's {@code null} - it's no-op.
+ * @param log Logger to log possible checked exception with (optional).
+ */
+ public static void close(@Nullable Socket sock, @Nullable IgniteLogger
log) {
+ if (sock == null || sock.isClosed())
+ return;
+
+ try {
+ // Closing output and input first to avoid tls 1.3 incompatibility
+ // https://bugs.openjdk.java.net/browse/JDK-8208526
+ if (!sock.isOutputShutdown())
+ sock.shutdownOutput();
+ if (!sock.isInputShutdown())
+ sock.shutdownInput();
+ }
+ catch (ClosedChannelException | SocketException ex) {
+ LT.warn(log, "Failed to shutdown socket", ex);
+ }
+ catch (Exception e) {
+ warn(log, "Failed to shutdown socket: " + e.getMessage(), e);
+ }
+
+ try {
+ sock.close();
+ }
+ catch (ClosedChannelException | SocketException ex) {
+ LT.warn(log, "Failed to close socket", ex);
+ }
+ catch (Exception e) {
+ warn(log, "Failed to close socket: " + e.getMessage(), e);
+ }
+ }
+
+ /**
+ * Closes given resource logging possible checked exceptions.
+ *
+ * @param rsrc Resource to close. If it's {@code null} - it's no-op.
+ * @param log Logger to log possible checked exception with (optional).
+ */
+ public static void close(@Nullable SelectionKey rsrc, @Nullable
IgniteLogger log) {
+ if (rsrc != null)
+ // This apply will automatically deregister the selection key as
well.
+ close(rsrc.channel(), log);
+ }
+
+ /**
+ * Closes given resource.
+ *
+ * @param rsrc Resource to close. If it's {@code null} - it's no-op.
+ */
+ public static void close(@Nullable DatagramSocket rsrc) {
+ if (rsrc != null)
+ rsrc.close();
+ }
+
+ /**
+ * Closes given resource logging possible checked exception.
+ *
+ * @param rsrc Resource to close. If it's {@code null} - it's no-op.
+ * @param log Logger to log possible checked exception with (optional).
+ */
+ public static void close(@Nullable Selector rsrc, @Nullable IgniteLogger
log) {
+ if (rsrc != null)
+ try {
+ if (rsrc.isOpen())
+ rsrc.close();
+ }
+ catch (IOException e) {
+ warn(log, "Failed to close resource: " + e.getMessage());
+ }
+ }
+
+ /**
+ * Closes class loader logging possible checked exception.
+ *
+ * @param clsLdr Class loader. If it's {@code null} - it's no-op.
+ * @param log Logger to log possible checked exception with (optional).
+ */
+ public static void close(@Nullable URLClassLoader clsLdr, @Nullable
IgniteLogger log) {
+ if (clsLdr != null) {
+ try {
+ clsLdr.close();
+ }
+ catch (Exception e) {
+ warn(log, "Failed to close resource: " + e.getMessage());
+ }
+ }
+ }
+
+ /**
+ * Depending on whether log is provided and quiet mode is enabled logs
given
+ * messages as quiet message or normal log WARN message. If {@code log} is
{@code null}
+ * or in QUIET mode it will add {@code (wrn)} prefix to the message.
+ *
+ * @param log Optional logger to use when QUIET mode is not enabled.
+ * @param msg Message to log.
+ */
+ public static void warn(@Nullable IgniteLogger log, Object msg) {
+ assert msg != null;
+
+ String s = msg.toString();
+
+ warn(log, s, null);
+ }
+
+ /**
+ * Depending on whether log is provided and quiet mode is enabled logs
given
+ * messages as quiet message or normal log WARN message. If {@code log} is
{@code null}
+ * or in QUIET mode it will add {@code (wrn)} prefix to the message.
+ *
+ * @param log Optional logger to use when QUIET mode is not enabled.
+ * @param msg Message to log using normal logger.
+ * @param e Optional exception.
+ */
+ public static void warn(@Nullable IgniteLogger log, Object msg, @Nullable
Throwable e) {
+ assert msg != null;
+
+ if (log != null)
+ log.warning(compact(msg.toString()), e);
+ else {
+ X.println("[" + SHORT_DATE_FMT.format(Instant.now()) + "] (wrn) " +
+ compact(msg.toString()));
+
+ if (e != null)
+ e.printStackTrace(System.err);
+ else
+ X.printerrln();
+ }
+ }
+
+ /**
+ * Logs warning message in both verbose and quiet modes.
+ *
+ * @param log Logger to use.
+ * @param msg Message to log.
+ */
+ public static void quietAndWarn(IgniteLogger log, Object msg) {
+ quietAndWarn(log, msg, msg);
+ }
+
+ /**
+ * Logs warning message in both verbose and quiet modes.
+ *
+ * @param log Logger to use.
+ * @param shortMsg Short message.
+ * @param msg Message to log.
+ */
+ public static void quietAndWarn(IgniteLogger log, Object msg, Object
shortMsg) {
+ warn(log, msg);
+
+ if (log.isQuiet())
+ quiet(false, shortMsg);
+ }
+
+ /**
+ * Logs warning message in both verbose and quiet modes.
+ *
+ * @param log Logger to use.
+ * @param msg Message to log.
+ * @param e Optional exception.
+ */
+ public static void quietAndWarn(IgniteLogger log, Object msg, @Nullable
Throwable e) {
+ warn(log, msg, e);
+
+ if (log.isQuiet())
+ quiet(false, msg);
+ }
+
+ /**
+ * Depending on whether log is provided and quiet mode is enabled logs
given
+ * messages as quiet message or normal log ERROR message. If {@code log}
is {@code null}
+ * or in QUIET mode it will add {@code (err)} prefix to the message.
+ *
+ * @param log Optional logger to use when QUIET mode is not enabled.
+ * @param msg Message to log.
+ */
+ public static void error(@Nullable IgniteLogger log, Object msg) {
+ assert msg != null;
+
+ if (msg instanceof Throwable) {
+ Throwable t = (Throwable)msg;
+
+ error(log, t.getMessage(), t);
+ }
+ else {
+ String s = msg.toString();
+
+ error(log, s, s, null);
+ }
+ }
+
+ /**
+ * Depending on whether log is provided and quiet mode is enabled logs
given
+ * messages as quiet message or normal log WARN message with {@link
IgniteLogger#DEV_ONLY DEV_ONLY} marker.
+ * If {@code log} is {@code null} or in QUIET mode it will add {@code
(wrn)} prefix to the message.
+ * If property {@link
IgniteCommonsSystemProperties#IGNITE_DEV_ONLY_LOGGING_DISABLED
IGNITE_DEV_ONLY_LOGGING_DISABLED}
+ * is set to true, the message will not be logged.
+ *
+ * @param log Optional logger to use when QUIET mode is not enabled.
+ * @param msg Message to log.
+ */
+ public static void warnDevOnly(@Nullable IgniteLogger log, Object msg) {
+ assert msg != null;
+
+ // don't log message if DEV_ONLY messages are disabled
+ if (devOnlyLogDisabled)
+ return;
+
+ if (log != null)
+ log.warning(IgniteLogger.DEV_ONLY, compact(msg.toString()), null);
+ else
+ X.println("[" + SHORT_DATE_FMT.format(Instant.now()) + "] (wrn) " +
+ compact(msg.toString()));
+ }
+
+ /**
+ * Depending on whether log is provided and quiet mode is enabled logs
given
+ * messages as quiet message or normal log INFO message.
+ * <p>
+ * <b>NOTE:</b> unlike the normal logging when INFO level may not be
enabled and
+ * therefore no logging will happen - using this method the log will be
written
+ * always either via INFO log or quiet mode.
+ * <p>
+ * <b>USE IT APPROPRIATELY.</b>
+ *
+ * @param log Optional logger to use when QUIET mode is not enabled.
+ * @param longMsg Message to log using normal logger.
+ * @param shortMsg Message to log using quiet logger.
+ */
+ public static void log(@Nullable IgniteLogger log, Object longMsg, Object
shortMsg) {
+ assert longMsg != null;
+ assert shortMsg != null;
+
+ if (log != null) {
+ if (log.isInfoEnabled())
+ log.info(compact(longMsg.toString()));
+ }
+ else
+ quiet(false, shortMsg);
+ }
+
+ /**
+ * Depending on whether log is provided and quiet mode is enabled logs
given
+ * messages as quiet message or normal log INF0 message.
+ * <p>
+ * <b>NOTE:</b> unlike the normal logging when INFO level may not be
enabled and
+ * therefore no logging will happen - using this method the log will be
written
+ * always either via INFO log or quiet mode.
+ * <p>
+ * <b>USE IT APPROPRIATELY.</b>
+ *
+ * @param log Optional logger to use when QUIET mode is not enabled.
+ * @param msg Message to log.
+ */
+ public static void log(@Nullable IgniteLogger log, Object msg) {
+ assert msg != null;
+
+ String s = msg.toString();
+
+ log(log, s, s);
+ }
+
+ /**
+ * Depending on whether log is provided and quiet mode is enabled logs
given
+ * messages as quiet message or normal log ERROR message. If {@code log}
is {@code null}
+ * or in QUIET mode it will add {@code (err)} prefix to the message.
+ *
+ * @param log Optional logger to use when QUIET mode is not enabled.
+ * @param longMsg Message to log using normal logger.
+ * @param shortMsg Message to log using quiet logger.
+ * @param e Optional exception.
+ */
+ public static void error(@Nullable IgniteLogger log, Object longMsg,
Object shortMsg, @Nullable Throwable e) {
+ assert longMsg != null;
+ assert shortMsg != null;
+
+ if (log != null) {
+ if (e == null)
+ log.error(compact(longMsg.toString()));
+ else
+ log.error(compact(longMsg.toString()), e);
+ }
+ else {
+ X.printerr("[" + SHORT_DATE_FMT.format(Instant.now()) + "] (err) "
+
+ compact(shortMsg.toString()));
+
+ if (e != null)
+ e.printStackTrace(System.err);
+ else
+ X.printerrln();
+ }
+ }
+
+ /**
+ * Shortcut for {@link #error(org.apache.ignite.IgniteLogger, Object,
Object, Throwable)}.
+ *
+ * @param log Optional logger.
+ * @param shortMsg Message to log using quiet logger.
+ * @param e Optional exception.
+ */
+ public static void error(@Nullable IgniteLogger log, Object shortMsg,
@Nullable Throwable e) {
+ assert shortMsg != null;
+
+ String s = shortMsg.toString();
+
+ error(log, s, s, e);
+ }
+
+ /**
+ *
+ * @param err Whether to print to {@code System.err}.
+ * @param objs Objects to log in quiet mode.
+ */
+ public static void quiet(boolean err, Object... objs) {
+ assert objs != null;
+
+ String time = SHORT_DATE_FMT.format(Instant.now());
+
+ SB sb = new SB();
+
+ for (Object obj : objs)
+ sb.a('[').a(time).a("] ").a(obj.toString()).a(NL);
+
+ PrintStream ps = err ? System.err : System.out;
+
+ ps.print(compact(sb.toString()));
+ }
+
+ /**
+ *
+ * @param err Whether to print to {@code System.err}.
+ * @param multiline Multiple lines string to print.
+ */
+ public static void quietMultipleLines(boolean err, String multiline) {
+ assert multiline != null;
+
+ quiet(err, multiline.split(NL));
+ }
+
+ /**
+ * Prints out the message in quiet and info modes.
+ *
+ * @param log Logger.
+ * @param msg Message to print.
+ */
+ public static void quietAndInfo(IgniteLogger log, String msg) {
+ if (log.isQuiet())
+ quiet(false, msg);
+
+ if (log.isInfoEnabled())
+ log.info(msg);
+ }
+
+ /**
+ * Replaces all occurrences of {@code org.apache.ignite.} with {@code
o.a.i.},
+ * {@code org.apache.ignite.internal.} with {@code o.a.i.i.},
+ * {@code org.apache.ignite.internal.visor.} with {@code o.a.i.i.v.} and
+ *
+ * @param s String to replace in.
+ * @return Replaces string.
+ */
+ public static String compact(String s) {
+ return s.replace("org.apache.ignite.internal.visor.", "o.a.i.i.v.").
+ replace("org.apache.ignite.internal.", "o.a.i.i.").
+ replace(IGNITE_PKG, "o.a.i.");
+ }
+
+ /**
+ * Check if given class represents a Enum.
+ *
+ * @param cls Class to check.
+ * @return {@code True} if this is a Enum class.
+ */
+ public static boolean isEnum(Class cls) {
+ if (cls.isEnum())
+ return true;
+
+ Class sCls = cls.getSuperclass();
+
+ return sCls != null && sCls.isEnum();
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/GridHandleTable.java
b/modules/commons/src/main/java/org/apache/ignite/internal/util/GridHandleTable.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/GridHandleTable.java
rename to
modules/commons/src/main/java/org/apache/ignite/internal/util/GridHandleTable.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLogThrottle.java
b/modules/commons/src/main/java/org/apache/ignite/internal/util/GridLogThrottle.java
similarity index 93%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/GridLogThrottle.java
rename to
modules/commons/src/main/java/org/apache/ignite/internal/util/GridLogThrottle.java
index 3061ba5de0a..707926a819d 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLogThrottle.java
+++
b/modules/commons/src/main/java/org/apache/ignite/internal/util/GridLogThrottle.java
@@ -18,15 +18,13 @@
package org.apache.ignite.internal.util;
import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.IgniteCommonsSystemProperties;
import org.apache.ignite.IgniteLogger;
-import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
import org.jetbrains.annotations.Nullable;
import org.jsr166.ConcurrentLinkedHashMap;
-import static
org.apache.ignite.IgniteSystemProperties.IGNITE_LOG_THROTTLE_CAPACITY;
import static org.jsr166.ConcurrentLinkedHashMap.DFLT_CONCUR_LVL;
/**
@@ -44,12 +42,12 @@ public class GridLogThrottle {
/** Throttle timeout in milliseconds. */
private static volatile int throttleTimeout = DFLT_THROTTLE_TIMEOUT;
- /** @see IgniteSystemProperties#IGNITE_LOG_THROTTLE_CAPACITY */
+ /** @see IgniteCommonsSystemProperties#IGNITE_LOG_THROTTLE_CAPACITY */
public static final int DFLT_LOG_THROTTLE_CAPACITY = 128;
/** Throttle capacity. */
private static final int throttleCap =
- IgniteSystemProperties.getInteger(IGNITE_LOG_THROTTLE_CAPACITY,
DFLT_LOG_THROTTLE_CAPACITY);
+
IgniteCommonsSystemProperties.getInteger(IgniteCommonsSystemProperties.IGNITE_LOG_THROTTLE_CAPACITY,
DFLT_LOG_THROTTLE_CAPACITY);
/** Errors. */
private static volatile ConcurrentMap<IgniteBiTuple<Class<? extends
Throwable>, String>, Long> errors =
@@ -220,7 +218,7 @@ public class GridLogThrottle {
while (true) {
Long loggedTs = errors.get(tup);
- long curTs = U.currentTimeMillis();
+ long curTs = CommonUtils.currentTimeMillis();
if (loggedTs == null || loggedTs < curTs - throttleTimeout) {
if (replace(tup, loggedTs, curTs)) {
@@ -268,9 +266,9 @@ public class GridLogThrottle {
/** {@inheritDoc} */
@Override public void doLog(IgniteLogger log, String msg,
Throwable e, boolean quiet) {
if (e != null)
- U.error(log, msg, e);
+ CommonUtils.error(log, msg, e);
else
- U.error(log, msg);
+ CommonUtils.error(log, msg);
}
},
@@ -279,9 +277,9 @@ public class GridLogThrottle {
/** {@inheritDoc} */
@Override public void doLog(IgniteLogger log, String msg,
Throwable e, boolean quiet) {
if (quiet)
- U.quietAndWarn(log, msg, e);
+ CommonUtils.quietAndWarn(log, msg, e);
else
- U.warn(log, msg, e);
+ CommonUtils.warn(log, msg, e);
}
},
@@ -290,7 +288,7 @@ public class GridLogThrottle {
/** {@inheritDoc} */
@Override public void doLog(IgniteLogger log, String msg,
Throwable e, boolean quiet) {
if (quiet)
- U.quietAndInfo(log, msg);
+ CommonUtils.quietAndInfo(log, msg);
else {
if (log.isInfoEnabled())
log.info(msg);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridDataInput.java
b/modules/commons/src/main/java/org/apache/ignite/internal/util/io/GridDataInput.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/io/GridDataInput.java
rename to
modules/commons/src/main/java/org/apache/ignite/internal/util/io/GridDataInput.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridDataOutput.java
b/modules/commons/src/main/java/org/apache/ignite/internal/util/io/GridDataOutput.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/io/GridDataOutput.java
rename to
modules/commons/src/main/java/org/apache/ignite/internal/util/io/GridDataOutput.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/internal/LT.java
b/modules/commons/src/main/java/org/apache/ignite/internal/util/typedef/internal/LT.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/typedef/internal/LT.java
rename to
modules/commons/src/main/java/org/apache/ignite/internal/util/typedef/internal/LT.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 2dfee417fbd..b759d2f7488 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -34,7 +34,6 @@ import org.apache.ignite.configuration.DiskPageCompression;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.binary.BinaryUtils;
import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineRecommender;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import
org.apache.ignite.internal.processors.cache.persistence.checkpoint.CheckpointEntry;
import
org.apache.ignite.internal.processors.cache.persistence.checkpoint.CheckpointMarkersStorage;
import
org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager;
@@ -42,7 +41,6 @@ import
org.apache.ignite.internal.processors.metastorage.DistributedMetaStorage;
import
org.apache.ignite.internal.processors.performancestatistics.FilePerformanceStatisticsWriter;
import
org.apache.ignite.internal.processors.query.schema.SchemaIndexCachePartitionWorker;
import org.apache.ignite.internal.processors.rest.GridRestCommand;
-import org.apache.ignite.internal.util.GridLogThrottle;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.lang.IgniteExperimental;
import org.apache.ignite.mxbean.MetricsMxBean;
@@ -134,7 +132,6 @@ import static
org.apache.ignite.internal.processors.query.schema.SchemaIndexCach
import static
org.apache.ignite.internal.processors.rest.GridRestProcessor.DFLT_SES_TIMEOUT;
import static
org.apache.ignite.internal.processors.rest.GridRestProcessor.DFLT_SES_TOKEN_INVALIDATE_INTERVAL;
import static
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.DFLT_MAX_TASK_RESULTS;
-import static
org.apache.ignite.internal.util.GridLogThrottle.DFLT_LOG_THROTTLE_CAPACITY;
import static
org.apache.ignite.internal.util.GridReflectionCache.DFLT_REFLECTION_CACHE_SIZE;
import static
org.apache.ignite.internal.util.IgniteExceptionRegistry.DEFAULT_QUEUE_SIZE;
import static
org.apache.ignite.internal.util.IgniteUtils.DFLT_MBEAN_APPEND_CLASS_LOADER_ID;
@@ -834,15 +831,6 @@ public final class IgniteSystemProperties extends
IgniteCommonsSystemProperties
@SystemProperty("Enables local store keeps primary only. Backward
compatibility flag")
public static final String IGNITE_LOCAL_STORE_KEEPS_PRIMARY_ONLY =
"IGNITE_LOCAL_STORE_KEEPS_PRIMARY_ONLY";
- /**
- * Manages {@link OptimizedMarshaller} behavior of {@code
serialVersionUID} computation for
- * {@link Serializable} classes.
- */
- @SystemProperty("Manages OptimizedMarshaller behavior of serialVersionUID
computation " +
- "for Serializable classes")
- public static final String IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID =
- "IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID";
-
/**
* Manages type of serialization mechanism for {@link String} that is
marshalled/unmarshalled by BinaryMarshaller.
* Should be used for cases when a String contains a surrogate symbol
without its pair one. This is frequently used
@@ -1162,11 +1150,6 @@ public final class IgniteSystemProperties extends
IgniteCommonsSystemProperties
defaults = "" + DFLT_USE_ASYNC_FILE_IO_FACTORY)
public static final String IGNITE_USE_ASYNC_FILE_IO_FACTORY =
"IGNITE_USE_ASYNC_FILE_IO_FACTORY";
- /** Max amount of remembered errors for {@link GridLogThrottle}. */
- @SystemProperty(value = "Max amount of remembered errors for
GridLogThrottle", type = Integer.class,
- defaults = "" + DFLT_LOG_THROTTLE_CAPACITY)
- public static final String IGNITE_LOG_THROTTLE_CAPACITY =
"IGNITE_LOG_THROTTLE_CAPACITY";
-
/**
* If this property is set, {@link
DataStorageConfiguration#setWriteThrottlingEnabled(boolean)}
* will be overridden to {@code true} regardless the initial value in the
configuration.
@@ -1267,13 +1250,6 @@ public final class IgniteSystemProperties extends
IgniteCommonsSystemProperties
"this mode", defaults = "true")
public static final String IGNITE_DIRECT_IO_ENABLED =
"IGNITE_DIRECT_IO_ENABLED";
- /**
- * When set to {@code true}, warnings that are intended for development
environments and not for production
- * (such as coding mistakes in code using Ignite) will not be logged.
- */
- @SystemProperty("Enables development environments warnings")
- public static final String IGNITE_DEV_ONLY_LOGGING_DISABLED =
"IGNITE_DEV_ONLY_LOGGING_DISABLED";
-
/**
* When set to {@code true} (default), pages are written to page store
without holding segment lock (with delay).
* Because other thread may require exactly the same page to be loaded
from store, reads are protected by locking.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index ac58cfc992d..a3e0ac10b61 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -112,7 +112,6 @@ import
org.apache.ignite.internal.managers.systemview.GridSystemViewManager;
import
org.apache.ignite.internal.managers.systemview.IgniteConfigurationIterable;
import
org.apache.ignite.internal.managers.systemview.walker.ConfigurationViewWalker;
import org.apache.ignite.internal.managers.tracing.GridTracingManager;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.plugin.IgniteLogInfoProvider;
import org.apache.ignite.internal.plugin.IgniteLogInfoProviderImpl;
import org.apache.ignite.internal.processors.GridProcessor;
@@ -205,6 +204,7 @@ import
org.apache.ignite.marshaller.IgniteMarshallerClassFilter;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.marshaller.MarshallerExclusions;
import org.apache.ignite.marshaller.MarshallerUtils;
+import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.metric.IgniteMetrics;
import org.apache.ignite.metric.MetricRegistry;
import org.apache.ignite.plugin.IgnitePlugin;
@@ -1416,8 +1416,7 @@ public class IgniteKernal implements IgniteEx,
Externalizable {
Marshaller marsh = ctx.marshaller();
marsh.setContext(ctx.marshallerContext());
-
- MarshallerUtils.setNodeName(marsh, ctx.igniteInstanceName());
+ marsh.nodeName(ctx.igniteInstanceName());
}
/** */
@@ -1535,7 +1534,7 @@ public class IgniteKernal implements IgniteEx,
Externalizable {
add(ATTR_BUILD_DATE, BUILD_TSTAMP_STR);
add(ATTR_MARSHALLER, ctx.marshaller().getClass().getName());
add(ATTR_MARSHALLER_USE_DFLT_SUID,
- getBoolean(IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID,
OptimizedMarshaller.USE_DFLT_SUID));
+ getBoolean(IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID,
Marshallers.USE_DFLT_SUID));
add(ATTR_LATE_AFFINITY_ASSIGNMENT, cfg.isLateAffinityAssignment());
add(ATTR_MARSHALLER_COMPACT_FOOTER, cfg.getBinaryConfiguration() ==
null ?
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
index 28131e156d0..9191ceddfb1 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
@@ -639,7 +639,7 @@ public class MarshallerContextImpl implements
MarshallerContext {
if (CU.isPersistenceEnabled(ctx.config()))
fileStore.restoreMappings(this);
- MarshallerUtils.setNodeName(jdkMarsh, ctx.igniteInstanceName());
+ jdkMarsh.nodeName(ctx.igniteInstanceName());
}
/**
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 81b8035a3e3..099b3edaf65 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
@@ -147,7 +147,7 @@ public class BinaryContext {
private final IgniteLogger log;
/** */
- private final OptimizedMarshaller optmMarsh = new
OptimizedMarshaller(false);
+ private final OptimizedMarshaller optmMarsh = Marshallers.optimized(false);
/** Compact footer flag. */
private final boolean compactFooter;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
index 267abee4784..2677959f0b4 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
@@ -26,6 +26,7 @@ import
org.apache.ignite.internal.client.marshaller.GridClientMarshaller;
import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import
org.apache.ignite.internal.processors.rest.client.message.GridClientMessage;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.plugin.PluginProvider;
import org.jetbrains.annotations.Nullable;
@@ -44,7 +45,7 @@ public class GridClientOptimizedMarshaller implements
GridClientMarshaller {
* Default constructor.
*/
public GridClientOptimizedMarshaller() {
- opMarsh = new OptimizedMarshaller();
+ opMarsh = Marshallers.optimized();
opMarsh.setContext(new MarshallerContextImpl(null, null));
}
@@ -55,7 +56,7 @@ public class GridClientOptimizedMarshaller implements
GridClientMarshaller {
* @param plugins Plugins.
*/
public GridClientOptimizedMarshaller(@Nullable List<PluginProvider>
plugins) {
- opMarsh = new OptimizedMarshaller();
+ opMarsh = Marshallers.optimized();
opMarsh.setContext(new MarshallerContextImpl(plugins, null));
}
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 71e42f6a04b..e8c5a63c337 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
@@ -35,7 +35,6 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
-import java.io.PrintStream;
import java.io.Reader;
import java.io.Serializable;
import java.io.StringWriter;
@@ -55,7 +54,6 @@ import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.math.BigDecimal;
import java.math.MathContext;
-import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
@@ -70,10 +68,7 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
-import java.nio.channels.ClosedChannelException;
import java.nio.channels.FileLock;
-import java.nio.channels.SelectionKey;
-import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
import java.nio.charset.Charset;
import java.nio.file.DirectoryStream;
@@ -218,7 +213,6 @@ import org.apache.ignite.internal.util.typedef.P1;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.internal.util.typedef.internal.CU;
-import org.apache.ignite.internal.util.typedef.internal.LT;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.SB;
import org.apache.ignite.internal.util.worker.GridWorker;
@@ -353,9 +347,6 @@ public abstract class IgniteUtils extends CommonUtils {
/** Length of numbered file name. */
public static final int NUMBER_FILE_NAME_LENGTH = 16;
- /** Ignite package. */
- public static final String IGNITE_PKG = "org.apache.ignite.";
-
/** Project home directory. */
private static volatile GridTuple<String> ggHome;
@@ -403,14 +394,6 @@ public abstract class IgniteUtils extends CommonUtils {
public static final DateTimeFormatter LONG_DATE_FMT =
DateTimeFormatter.ofPattern("MM/dd/yyyy
HH:mm:ss").withZone(ZoneId.systemDefault());
- /**
- * Short date format pattern for log messages in "quiet" mode.
- * Only time is included since we don't expect "quiet" mode to be used
- * for longer runs.
- */
- public static final DateTimeFormatter SHORT_DATE_FMT =
-
DateTimeFormatter.ofPattern("HH:mm:ss").withZone(ZoneId.systemDefault());
-
/** Debug date format. */
public static final DateTimeFormatter DEBUG_DATE_FMT =
DateTimeFormatter.ofPattern("HH:mm:ss,SSS").withZone(ZoneId.systemDefault());
@@ -493,10 +476,6 @@ public abstract class IgniteUtils extends CommonUtils {
*/
private static final Field urlClsLdrField = urlClassLoaderField();
- /** Dev only logging disabled. */
- private static final boolean devOnlyLogDisabled =
-
IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_DEV_ONLY_LOGGING_DISABLED);
-
/** JDK9: jdk.internal.loader.URLClassPath. */
private static Class clsURLClassPath;
@@ -3264,59 +3243,6 @@ public abstract class IgniteUtils extends CommonUtils {
return false;
}
- /**
- * Closes given resource logging possible checked exception.
- *
- * @param rsrc Resource to close. If it's {@code null} - it's no-op.
- * @param log Logger to log possible checked exception with (optional).
- */
- public static void close(@Nullable AutoCloseable rsrc, @Nullable
IgniteLogger log) {
- if (rsrc != null) {
- try {
- rsrc.close();
- }
- catch (Exception e) {
- warn(log, "Failed to close resource: " + e.getMessage(), e);
- }
- }
- }
-
- /**
- * Closes given socket logging possible checked exception.
- *
- * @param sock Socket to close. If it's {@code null} - it's no-op.
- * @param log Logger to log possible checked exception with (optional).
- */
- public static void close(@Nullable Socket sock, @Nullable IgniteLogger
log) {
- if (sock == null || sock.isClosed())
- return;
-
- try {
- // Closing output and input first to avoid tls 1.3 incompatibility
- // https://bugs.openjdk.java.net/browse/JDK-8208526
- if (!sock.isOutputShutdown())
- sock.shutdownOutput();
- if (!sock.isInputShutdown())
- sock.shutdownInput();
- }
- catch (ClosedChannelException | SocketException ex) {
- LT.warn(log, "Failed to shutdown socket", ex);
- }
- catch (Exception e) {
- warn(log, "Failed to shutdown socket: " + e.getMessage(), e);
- }
-
- try {
- sock.close();
- }
- catch (ClosedChannelException | SocketException ex) {
- LT.warn(log, "Failed to close socket", ex);
- }
- catch (Exception e) {
- warn(log, "Failed to close socket: " + e.getMessage(), e);
- }
- }
-
/**
* Closes given resource suppressing possible checked exception.
*
@@ -3348,62 +3274,6 @@ public abstract class IgniteUtils extends CommonUtils {
}
}
- /**
- * Closes given resource logging possible checked exceptions.
- *
- * @param rsrc Resource to close. If it's {@code null} - it's no-op.
- * @param log Logger to log possible checked exception with (optional).
- */
- public static void close(@Nullable SelectionKey rsrc, @Nullable
IgniteLogger log) {
- if (rsrc != null)
- // This apply will automatically deregister the selection key as
well.
- close(rsrc.channel(), log);
- }
-
- /**
- * Closes given resource.
- *
- * @param rsrc Resource to close. If it's {@code null} - it's no-op.
- */
- public static void close(@Nullable DatagramSocket rsrc) {
- if (rsrc != null)
- rsrc.close();
- }
-
- /**
- * Closes given resource logging possible checked exception.
- *
- * @param rsrc Resource to close. If it's {@code null} - it's no-op.
- * @param log Logger to log possible checked exception with (optional).
- */
- public static void close(@Nullable Selector rsrc, @Nullable IgniteLogger
log) {
- if (rsrc != null)
- try {
- if (rsrc.isOpen())
- rsrc.close();
- }
- catch (IOException e) {
- warn(log, "Failed to close resource: " + e.getMessage());
- }
- }
-
- /**
- * Closes class loader logging possible checked exception.
- *
- * @param clsLdr Class loader. If it's {@code null} - it's no-op.
- * @param log Logger to log possible checked exception with (optional).
- */
- public static void close(@Nullable URLClassLoader clsLdr, @Nullable
IgniteLogger log) {
- if (clsLdr != null) {
- try {
- clsLdr.close();
- }
- catch (Exception e) {
- warn(log, "Failed to close resource: " + e.getMessage());
- }
- }
- }
-
/**
* Quietly closes given {@link Socket} ignoring possible checked exception.
*
@@ -3499,158 +3369,6 @@ public abstract class IgniteUtils extends CommonUtils {
compact(shortMsg.toString()));
}
- /**
- * Depending on whether or not log is provided and quiet mode is enabled
logs given
- * messages as quiet message or normal log WARN message. If {@code log} is
{@code null}
- * or in QUIET mode it will add {@code (wrn)} prefix to the message.
- *
- * @param log Optional logger to use when QUIET mode is not enabled.
- * @param msg Message to log.
- */
- public static void warn(@Nullable IgniteLogger log, Object msg) {
- assert msg != null;
-
- String s = msg.toString();
-
- warn(log, s, null);
- }
-
- /**
- * Logs warning message in both verbose and quiet modes.
- *
- * @param log Logger to use.
- * @param msg Message to log.
- */
- public static void quietAndWarn(IgniteLogger log, Object msg) {
- quietAndWarn(log, msg, msg);
- }
-
- /**
- * Logs warning message in both verbose and quiet modes.
- *
- * @param log Logger to use.
- * @param shortMsg Short message.
- * @param msg Message to log.
- */
- public static void quietAndWarn(IgniteLogger log, Object msg, Object
shortMsg) {
- warn(log, msg);
-
- if (log.isQuiet())
- quiet(false, shortMsg);
- }
-
- /**
- * Logs warning message in both verbose and quiet modes.
- *
- * @param log Logger to use.
- * @param msg Message to log.
- * @param e Optional exception.
- */
- public static void quietAndWarn(IgniteLogger log, Object msg, @Nullable
Throwable e) {
- warn(log, msg, e);
-
- if (log.isQuiet())
- quiet(false, msg);
- }
-
- /**
- * Depending on whether or not log is provided and quiet mode is enabled
logs given
- * messages as quiet message or normal log ERROR message. If {@code log}
is {@code null}
- * or in QUIET mode it will add {@code (err)} prefix to the message.
- *
- * @param log Optional logger to use when QUIET mode is not enabled.
- * @param msg Message to log.
- */
- public static void error(@Nullable IgniteLogger log, Object msg) {
- assert msg != null;
-
- if (msg instanceof Throwable) {
- Throwable t = (Throwable)msg;
-
- error(log, t.getMessage(), t);
- }
- else {
- String s = msg.toString();
-
- error(log, s, s, null);
- }
- }
-
- /**
- * Depending on whether or not log is provided and quiet mode is enabled
logs given
- * messages as quiet message or normal log WARN message. If {@code log} is
{@code null}
- * or in QUIET mode it will add {@code (wrn)} prefix to the message.
- *
- * @param log Optional logger to use when QUIET mode is not enabled.
- * @param msg Message to log using normal logger.
- * @param e Optional exception.
- */
- public static void warn(@Nullable IgniteLogger log, Object msg, @Nullable
Throwable e) {
- assert msg != null;
-
- if (log != null)
- log.warning(compact(msg.toString()), e);
- else {
- X.println("[" + SHORT_DATE_FMT.format(Instant.now()) + "] (wrn) " +
- compact(msg.toString()));
-
- if (e != null)
- e.printStackTrace(System.err);
- else
- X.printerrln();
- }
- }
-
- /**
- * Depending on whether or not log is provided and quiet mode is enabled
logs given
- * messages as quiet message or normal log WARN message with {@link
IgniteLogger#DEV_ONLY DEV_ONLY} marker.
- * If {@code log} is {@code null} or in QUIET mode it will add {@code
(wrn)} prefix to the message.
- * If property {@link
IgniteSystemProperties#IGNITE_DEV_ONLY_LOGGING_DISABLED
IGNITE_DEV_ONLY_LOGGING_DISABLED}
- * is set to true, the message will not be logged.
- *
- * @param log Optional logger to use when QUIET mode is not enabled.
- * @param msg Message to log.
- */
- public static void warnDevOnly(@Nullable IgniteLogger log, Object msg) {
- assert msg != null;
-
- // don't log message if DEV_ONLY messages are disabled
- if (devOnlyLogDisabled)
- return;
-
- if (log != null)
- log.warning(IgniteLogger.DEV_ONLY, compact(msg.toString()), null);
- else
- X.println("[" + SHORT_DATE_FMT.format(Instant.now()) + "] (wrn) " +
- compact(msg.toString()));
- }
-
- /**
- * Depending on whether or not log is provided and quiet mode is enabled
logs given
- * messages as quiet message or normal log INFO message.
- * <p>
- * <b>NOTE:</b> unlike the normal logging when INFO level may not be
enabled and
- * therefore no logging will happen - using this method the log will be
written
- * always either via INFO log or quiet mode.
- * <p>
- * <b>USE IT APPROPRIATELY.</b>
- *
- * @param log Optional logger to use when QUIET mode is not enabled.
- * @param longMsg Message to log using normal logger.
- * @param shortMsg Message to log using quiet logger.
- */
- public static void log(@Nullable IgniteLogger log, Object longMsg, Object
shortMsg) {
- assert longMsg != null;
- assert shortMsg != null;
-
- if (log != null) {
- if (log.isInfoEnabled())
- log.info(compact(longMsg.toString()));
- }
- else
- quiet(false, shortMsg);
- }
-
/**
* Resolves work directory.
* @param cfg Ignite configuration.
@@ -3773,118 +3491,6 @@ public abstract class IgniteUtils extends CommonUtils {
}
}
- /**
- * Depending on whether or not log is provided and quiet mode is enabled
logs given
- * messages as quiet message or normal log INF0 message.
- * <p>
- * <b>NOTE:</b> unlike the normal logging when INFO level may not be
enabled and
- * therefore no logging will happen - using this method the log will be
written
- * always either via INFO log or quiet mode.
- * <p>
- * <b>USE IT APPROPRIATELY.</b>
- *
- * @param log Optional logger to use when QUIET mode is not enabled.
- * @param msg Message to log.
- */
- public static void log(@Nullable IgniteLogger log, Object msg) {
- assert msg != null;
-
- String s = msg.toString();
-
- log(log, s, s);
- }
-
- /**
- * Depending on whether or not log is provided and quiet mode is enabled
logs given
- * messages as quiet message or normal log ERROR message. If {@code log}
is {@code null}
- * or in QUIET mode it will add {@code (err)} prefix to the message.
- *
- * @param log Optional logger to use when QUIET mode is not enabled.
- * @param longMsg Message to log using normal logger.
- * @param shortMsg Message to log using quiet logger.
- * @param e Optional exception.
- */
- public static void error(@Nullable IgniteLogger log, Object longMsg,
Object shortMsg, @Nullable Throwable e) {
- assert longMsg != null;
- assert shortMsg != null;
-
- if (log != null) {
- if (e == null)
- log.error(compact(longMsg.toString()));
- else
- log.error(compact(longMsg.toString()), e);
- }
- else {
- X.printerr("[" + SHORT_DATE_FMT.format(Instant.now()) + "] (err) "
+
- compact(shortMsg.toString()));
-
- if (e != null)
- e.printStackTrace(System.err);
- else
- X.printerrln();
- }
- }
-
- /**
- * Shortcut for {@link #error(org.apache.ignite.IgniteLogger, Object,
Object, Throwable)}.
- *
- * @param log Optional logger.
- * @param shortMsg Message to log using quiet logger.
- * @param e Optional exception.
- */
- public static void error(@Nullable IgniteLogger log, Object shortMsg,
@Nullable Throwable e) {
- assert shortMsg != null;
-
- String s = shortMsg.toString();
-
- error(log, s, s, e);
- }
-
- /**
- *
- * @param err Whether to print to {@code System.err}.
- * @param objs Objects to log in quiet mode.
- */
- public static void quiet(boolean err, Object... objs) {
- assert objs != null;
-
- String time = SHORT_DATE_FMT.format(Instant.now());
-
- SB sb = new SB();
-
- for (Object obj : objs)
- sb.a('[').a(time).a("] ").a(obj.toString()).a(NL);
-
- PrintStream ps = err ? System.err : System.out;
-
- ps.print(compact(sb.toString()));
- }
-
- /**
- *
- * @param err Whether to print to {@code System.err}.
- * @param multiline Multiple lines string to print.
- */
- public static void quietMultipleLines(boolean err, String multiline) {
- assert multiline != null;
-
- quiet(err, multiline.split(NL));
- }
-
- /**
- * Prints out the message in quiet and info modes.
- *
- * @param log Logger.
- * @param msg Message to print.
- */
- public static void quietAndInfo(IgniteLogger log, String msg) {
- if (log.isQuiet())
- quiet(false, msg);
-
- if (log.isInfoEnabled())
- log.info(msg);
- }
-
/**
* Quietly rollbacks JDBC connection ignoring possible checked exception.
*
@@ -5305,20 +4911,6 @@ public abstract class IgniteUtils extends CommonUtils {
return cls.getName().startsWith("org.apache.ignite.internal");
}
- /**
- * Replaces all occurrences of {@code org.apache.ignite.} with {@code
o.a.i.},
- * {@code org.apache.ignite.internal.} with {@code o.a.i.i.},
- * {@code org.apache.ignite.internal.visor.} with {@code o.a.i.i.v.} and
- *
- * @param s String to replace in.
- * @return Replaces string.
- */
- public static String compact(String s) {
- return s.replace("org.apache.ignite.internal.visor.", "o.a.i.i.v.").
- replace("org.apache.ignite.internal.", "o.a.i.i.").
- replace(IGNITE_PKG, "o.a.i.");
- }
-
/**
* Check if given class is of JDK type.
*
@@ -5334,21 +4926,6 @@ public abstract class IgniteUtils extends CommonUtils {
return s.startsWith("java.") || s.startsWith("javax.");
}
- /**
- * Check if given class represents a Enum.
- *
- * @param cls Class to check.
- * @return {@code True} if this is a Enum class.
- */
- public static boolean isEnum(Class cls) {
- if (cls.isEnum())
- return true;
-
- Class sCls = cls.getSuperclass();
-
- return sCls != null && sCls.isEnum();
- }
-
/**
* Converts {@link InterruptedException} to {@link IgniteCheckedException}.
*
@@ -6821,7 +6398,7 @@ public abstract class IgniteUtils extends CommonUtils {
public static Class<?> forName(
String clsName,
@Nullable ClassLoader ldr,
- IgnitePredicate<String> clsFilter
+ @Nullable IgnitePredicate<String> clsFilter
) throws ClassNotFoundException {
return forName(clsName, ldr, clsFilter, Marshallers.USE_CACHE.get());
}
@@ -7508,18 +7085,6 @@ public abstract class IgniteUtils extends CommonUtils {
return res;
}
- /**
- * Creates new {@link HashMap} with expected size.
- *
- * @param expSize Expected size of created map.
- * @param <K> Type of map keys.
- * @param <V> Type of map values.
- * @return New map.
- */
- public static <K, V> HashMap<K, V> newHashMap(int expSize) {
- return new HashMap<>(capacity(expSize));
- }
-
/**
* Creates new {@link LinkedHashMap} with expected size.
*
@@ -9337,37 +8902,6 @@ public abstract class IgniteUtils extends CommonUtils {
return IGNITE_SUCCESS_FILE_PROPERTY != null;
}
- /**
- * Returns {@code true} if class is a lambda.
- *
- * @param objectClass Class.
- * @return {@code true} if class is a lambda, {@code false} otherwise.
- */
- public static boolean isLambda(Class<?> objectClass) {
- return !objectClass.isPrimitive() && !objectClass.isArray()
- // Order is crucial here, isAnonymousClass and isLocalClass may
fail if
- // class' outer class was loaded with different classloader.
- && objectClass.isSynthetic()
- && !objectClass.isAnonymousClass() && !objectClass.isLocalClass()
- && classCannotBeLoadedByName(objectClass);
- }
-
- /**
- * Returns {@code true} if class can not be loaded by name.
- *
- * @param objectClass Class.
- * @return {@code true} if class can not be loaded by name, {@code false}
otherwise.
- */
- public static boolean classCannotBeLoadedByName(Class<?> objectClass) {
- try {
- Class.forName(objectClass.getName());
- return false;
- }
- catch (ClassNotFoundException e) {
- return true;
- }
- }
-
/**
* Appends spaces to end of input string for extending to needed length.
*
diff --git
a/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerUtils.java
b/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerUtils.java
index c77d2880896..fb23c8bcbbd 100644
---
a/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerUtils.java
+++
b/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerUtils.java
@@ -66,17 +66,6 @@ public class MarshallerUtils {
/** */
private static final Object MUX = new Object();
- /**
- * Set node name to marshaller context if possible.
- *
- * @param marsh Marshaller instance.
- * @param nodeName Node name.
- */
- public static void setNodeName(Marshaller marsh, @Nullable String
nodeName) {
- if (marsh instanceof AbstractNodeNameAwareMarshaller)
- ((AbstractNodeNameAwareMarshaller)marsh).nodeName(nodeName);
- }
-
/**
* Private constructor.
*/
diff --git
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index a2d55b094f5..c4ba9264ebc 100644
---
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -74,7 +74,6 @@ import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.lang.IgniteProductVersion;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.marshaller.MarshallerUtils;
import org.apache.ignite.resources.IgniteInstanceResource;
import org.apache.ignite.resources.LoggerResource;
import org.apache.ignite.spi.IgniteSpiAdapter;
@@ -2531,7 +2530,7 @@ public class TcpDiscoverySpi extends IgniteSpiAdapter
implements IgniteDiscovery
* @return Marshaller.
*/
protected Marshaller marshaller() {
- MarshallerUtils.setNodeName(marsh, igniteInstanceName);
+ marsh.nodeName(igniteInstanceName);
return marsh;
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/stream/socket/SocketStreamer.java
b/modules/core/src/main/java/org/apache/ignite/stream/socket/SocketStreamer.java
index 9ea50a0819d..e4587555f3f 100644
---
a/modules/core/src/main/java/org/apache/ignite/stream/socket/SocketStreamer.java
+++
b/modules/core/src/main/java/org/apache/ignite/stream/socket/SocketStreamer.java
@@ -38,7 +38,6 @@ import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.marshaller.MarshallerUtils;
import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.stream.StreamAdapter;
import org.apache.ignite.stream.StreamTupleExtractor;
@@ -231,7 +230,7 @@ public class SocketStreamer<T, K, V> extends
StreamAdapter<T, K, V> {
private DefaultConverter(@Nullable String igniteInstanceName) {
marsh =
Marshallers.jdk(((IgniteKernal)ignite).context().marshallerContext().classNameFilter());
- MarshallerUtils.setNodeName(marsh, igniteInstanceName);
+ marsh.nodeName(igniteInstanceName);
}
/** {@inheritDoc} */
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
index 2f4212f9a9f..a89a8dfb11f 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
@@ -22,7 +22,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.DeploymentMode;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.spi.discovery.TestReconnectSecurityPluginProvider;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
@@ -134,7 +134,7 @@ public class GridDiscoveryManagerAttributesSelfTest extends
GridCommonAbstractTe
}
finally {
System.setProperty(IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID,
- String.valueOf(OptimizedMarshaller.USE_DFLT_SUID));
+ String.valueOf(Marshallers.USE_DFLT_SUID));
}
}
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java
index 3cba5d59be1..dc15eedb27c 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.marshaller.optimized;
import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
@@ -31,7 +32,7 @@ public class OptimizedMarshallerEnumSelfTest extends
GridCommonAbstractTest {
*/
@Test
public void testEnumSerialisation() throws Exception {
- Marshaller marsh = initTestMarshallerContext(new
OptimizedMarshaller());
+ Marshaller marsh = initTestMarshallerContext(Marshallers.optimized());
byte[] bytes = marsh.marshal(TestEnum.Bond);
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java
index 4199dc9686f..15223c9eb6a 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.marshaller.optimized;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.testframework.junits.common.GridCommonTest;
/**
@@ -28,7 +29,7 @@ import
org.apache.ignite.testframework.junits.common.GridCommonTest;
public class OptimizedMarshallerPooledSelfTest extends
OptimizedMarshallerSelfTest {
/** {@inheritDoc} */
@Override protected Marshaller marshaller() throws IgniteCheckedException {
- OptimizedMarshaller m = initTestMarshallerContext(new
OptimizedMarshaller(false));
+ OptimizedMarshaller m =
initTestMarshallerContext(Marshallers.optimized(false));
m.setPoolSize(8);
@@ -38,6 +39,6 @@ public class OptimizedMarshallerPooledSelfTest extends
OptimizedMarshallerSelfTe
/** {@inheritDoc} */
@Override protected void afterTestsStopped() throws Exception {
// Reset static registry.
- new OptimizedMarshaller().setPoolSize(0);
+ Marshallers.optimized().setPoolSize(0);
}
}
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSelfTest.java
index 4cc60836797..0e95b8c5bda 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSelfTest.java
@@ -26,6 +26,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.lang.IgniteRunnable;
import org.apache.ignite.marshaller.GridMarshallerAbstractTest;
import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonTest;
import org.junit.Test;
@@ -37,7 +38,7 @@ import org.junit.Test;
public class OptimizedMarshallerSelfTest extends GridMarshallerAbstractTest {
/** {@inheritDoc} */
@Override protected Marshaller marshaller() throws IgniteCheckedException {
- return initTestMarshallerContext(new OptimizedMarshaller(false));
+ return initTestMarshallerContext(Marshallers.optimized(false));
}
/**
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java
index 435ffdb59f0..3522c95aa1c 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java
@@ -24,6 +24,7 @@ import java.io.Serializable;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.marshaller.GridMarshallerAbstractTest;
import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.marshaller.Marshallers;
import org.junit.Test;
/**
@@ -32,7 +33,7 @@ import org.junit.Test;
public class OptimizedMarshallerSerialPersistentFieldsSelfTest extends
GridMarshallerAbstractTest {
/** {@inheritDoc} */
@Override protected Marshaller marshaller() throws IgniteCheckedException {
- return initTestMarshallerContext(new OptimizedMarshaller(false));
+ return initTestMarshallerContext(Marshallers.optimized(false));
}
/**
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerTest.java
index 6b0fc73977e..e4aa8de4bdc 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerTest.java
@@ -35,6 +35,7 @@ import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.GridMarshallerTestInheritedBean;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.marshaller.MarshallerContextTestImpl;
+import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import
org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinderAdapter;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -53,7 +54,7 @@ public class OptimizedMarshallerTest extends
GridCommonAbstractTest {
private OptimizedMarshaller marshaller() {
U.clearClassCache();
- OptimizedMarshaller marsh = new OptimizedMarshaller();
+ OptimizedMarshaller marsh = Marshallers.optimized();
marsh.setContext(new MarshallerContextTestImpl());
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamSelfTest.java
index b974f49f89b..67695c9ee51 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamSelfTest.java
@@ -66,6 +66,7 @@ import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.MarshallerContext;
import org.apache.ignite.marshaller.MarshallerContextTestImpl;
import org.apache.ignite.marshaller.MarshallerExclusions;
+import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.jetbrains.annotations.Nullable;
@@ -275,7 +276,7 @@ public class OptimizedObjectStreamSelfTest extends
GridCommonAbstractTest {
@Test
public void testRequireSerializable() throws Exception {
try {
- OptimizedMarshaller marsh = new OptimizedMarshaller(true);
+ OptimizedMarshaller marsh = Marshallers.optimized(true);
marsh.setContext(CTX);
@@ -298,7 +299,7 @@ public class OptimizedObjectStreamSelfTest extends
GridCommonAbstractTest {
*/
@Test
public void testFailedUnmarshallingLogging() throws Exception {
- OptimizedMarshaller marsh = new OptimizedMarshaller(true);
+ OptimizedMarshaller marsh = Marshallers.optimized(true);
marsh.setContext(CTX);
@@ -320,7 +321,7 @@ public class OptimizedObjectStreamSelfTest extends
GridCommonAbstractTest {
*/
@Test
public void testFailedMarshallingLogging() throws Exception {
- OptimizedMarshaller marsh = new OptimizedMarshaller(true);
+ OptimizedMarshaller marsh = Marshallers.optimized(true);
marsh.setContext(CTX);
@@ -350,7 +351,7 @@ public class OptimizedObjectStreamSelfTest extends
GridCommonAbstractTest {
Arrays.fill(obj.longArr, 100L);
Arrays.fill(obj.doubleArr, 100.0d);
- final OptimizedMarshaller marsh = new OptimizedMarshaller();
+ final OptimizedMarshaller marsh = Marshallers.optimized();
marsh.setContext(CTX);
diff --git
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/ClusterMetricsSnapshotSerializeCompatibilityTest.java
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/ClusterMetricsSnapshotSerializeCompatibilityTest.java
index 1e45af48272..d906a657ad7 100644
---
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/ClusterMetricsSnapshotSerializeCompatibilityTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/ClusterMetricsSnapshotSerializeCompatibilityTest.java
@@ -23,6 +23,7 @@ import
org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.cache.CacheMetricsSnapshot;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.MarshallerContextTestImpl;
+import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
@@ -81,7 +82,7 @@ public class ClusterMetricsSnapshotSerializeCompatibilityTest
extends GridCommon
private OptimizedMarshaller marshaller() {
U.clearClassCache();
- OptimizedMarshaller marsh = new OptimizedMarshaller();
+ OptimizedMarshaller marsh = Marshallers.optimized();
marsh.setContext(new MarshallerContextTestImpl());
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataInput.java
b/modules/unsafe/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataInput.java
similarity index 98%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataInput.java
rename to
modules/unsafe/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataInput.java
index 08666e0fa63..9d760df8d76 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataInput.java
+++
b/modules/unsafe/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataInput.java
@@ -21,13 +21,13 @@ import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.io.UTFDataFormatException;
+import org.apache.ignite.IgniteCommonsSystemProperties;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.SB;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import static
org.apache.ignite.IgniteSystemProperties.IGNITE_MARSHAL_BUFFERS_RECHECK;
import static
org.apache.ignite.internal.util.CommonUtils.DFLT_MARSHAL_BUFFERS_RECHECK;
import static org.apache.ignite.internal.util.GridUnsafe.BIG_ENDIAN;
import static org.apache.ignite.internal.util.GridUnsafe.BYTE_ARR_OFF;
@@ -43,7 +43,8 @@ import static
org.apache.ignite.internal.util.GridUnsafe.SHORT_ARR_OFF;
*/
public class GridUnsafeDataInput extends InputStream implements GridDataInput {
/** */
- private static final Long CHECK_FREQ =
Long.getLong(IGNITE_MARSHAL_BUFFERS_RECHECK, DFLT_MARSHAL_BUFFERS_RECHECK);
+ private static final Long CHECK_FREQ =
+
Long.getLong(IgniteCommonsSystemProperties.IGNITE_MARSHAL_BUFFERS_RECHECK,
DFLT_MARSHAL_BUFFERS_RECHECK);
/** Maximum data block length. */
private static final int MAX_BLOCK_SIZE = 1024;
@@ -125,7 +126,7 @@ public class GridUnsafeDataInput extends InputStream
implements GridDataInput {
maxOff = Math.max(maxOff, size);
- long now = U.currentTimeMillis();
+ long now = CommonUtils.currentTimeMillis();
// Increase size of buffer if needed.
if (size > inBuf.length)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataOutput.java
b/modules/unsafe/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataOutput.java
similarity index 97%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataOutput.java
rename to
modules/unsafe/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataOutput.java
index f2331d84a09..2277c258204 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataOutput.java
+++
b/modules/unsafe/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataOutput.java
@@ -20,11 +20,11 @@ package org.apache.ignite.internal.util.io;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;
+import org.apache.ignite.IgniteCommonsSystemProperties;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import static
org.apache.ignite.IgniteSystemProperties.IGNITE_MARSHAL_BUFFERS_RECHECK;
import static
org.apache.ignite.internal.util.CommonUtils.DFLT_MARSHAL_BUFFERS_RECHECK;
import static org.apache.ignite.internal.util.CommonUtils.MAX_ARRAY_SIZE;
import static org.apache.ignite.internal.util.GridUnsafe.BIG_ENDIAN;
@@ -41,7 +41,8 @@ import static
org.apache.ignite.internal.util.GridUnsafe.SHORT_ARR_OFF;
*/
public class GridUnsafeDataOutput extends OutputStream implements
GridDataOutput {
/** */
- private static final long CHECK_FREQ =
Long.getLong(IGNITE_MARSHAL_BUFFERS_RECHECK, DFLT_MARSHAL_BUFFERS_RECHECK);
+ private static final long CHECK_FREQ =
+
Long.getLong(IgniteCommonsSystemProperties.IGNITE_MARSHAL_BUFFERS_RECHECK,
DFLT_MARSHAL_BUFFERS_RECHECK);
/** Length of char buffer (for writing strings). */
private static final int CHAR_BUF_SIZE = 256;
@@ -62,7 +63,7 @@ public class GridUnsafeDataOutput extends OutputStream
implements GridDataOutput
private int maxOff;
/** Last length check timestamp. */
- private long lastCheck = U.currentTimeMillis();
+ private long lastCheck = CommonUtils.currentTimeMillis();
/**
*
@@ -132,7 +133,7 @@ public class GridUnsafeDataOutput extends OutputStream
implements GridDataOutput
maxOff = Math.max(maxOff, size);
- long now = U.currentTimeMillis();
+ long now = CommonUtils.currentTimeMillis();
if (size > bytes.length) {
int newSize = size << 1;
@@ -156,7 +157,7 @@ public class GridUnsafeDataOutput extends OutputStream
implements GridDataOutput
/**
* @param size Size of potential byte array to check.
* @return true if {@code new byte[size]} won't throw {@link
OutOfMemoryError} given enough heap space.
- * @see U#MAX_ARRAY_SIZE
+ * @see CommonUtils#MAX_ARRAY_SIZE
*/
private boolean canBeAllocated(long size) {
return 0 <= size && size <= MAX_ARRAY_SIZE;