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 e5b795162ef IGNITE-25359 BinaryStreams moved to ignite-binary-impl
(#12188)
e5b795162ef is described below
commit e5b795162ef5bd8e942424b45ebfc6dfb02aa72c
Author: Nikolay <[email protected]>
AuthorDate: Thu Jul 17 10:06:55 2025 +0300
IGNITE-25359 BinaryStreams moved to ignite-binary-impl (#12188)
---
assembly/dependencies-apache-ignite-lgpl.xml | 1 +
assembly/dependencies-apache-ignite-slim.xml | 1 +
assembly/dependencies-apache-ignite.xml | 1 +
modules/binary/api/README.txt | 9 +++
.../internal/binary/BinaryPositionReadable.java | 0
.../internal/binary/streams/BinaryInputStream.java | 0
.../binary/streams/BinaryMemoryAllocatorChunk.java | 0
.../binary/streams/BinaryOutputStream.java | 0
.../internal/binary/streams/BinaryStream.java | 0
.../internal/binary/streams/BinaryStreams.java | 35 ++++++---
.../binary/streams/BinaryStreamsFactory.java} | 46 ++++-------
modules/binary/impl/README.txt | 8 ++
modules/binary/impl/pom.xml | 75 ++++++++++++++++++
.../binary/streams/BinaryAbstractInputStream.java | 0
.../binary/streams/BinaryAbstractOutputStream.java | 0
.../binary/streams/BinaryAbstractStream.java | 0
.../streams/BinaryByteBufferInputStream.java | 0
.../binary/streams/BinaryHeapInputStream.java | 0
.../binary/streams/BinaryHeapOutputStream.java | 0
.../binary/streams/BinaryMemoryAllocator.java | 16 ++--
.../binary/streams/BinaryOffheapInputStream.java | 0
.../binary/streams/BinaryOffheapOutputStream.java | 0
.../binary/streams/BinaryStreamsFactoryImpl.java | 72 +++++++++++++++++
...te.internal.binary.streams.BinaryStreamsFactory | 1 +
modules/bom/pom.xml | 5 ++
.../ignite/IgniteCommonsSystemProperties.java | 17 ++++
.../apache/ignite/internal/util/CommonUtils.java | 90 ++++++++++++++++++++++
modules/core/pom.xml | 7 ++
.../org/apache/ignite/IgniteSystemProperties.java | 17 ----
.../apache/ignite/internal/binary/BinaryUtils.java | 6 --
.../apache/ignite/internal/util/IgniteUtils.java | 82 --------------------
.../internal/util/io/GridUnsafeDataInput.java | 2 +-
.../internal/util/io/GridUnsafeDataOutput.java | 2 +-
pom.xml | 1 +
34 files changed, 341 insertions(+), 153 deletions(-)
diff --git a/assembly/dependencies-apache-ignite-lgpl.xml
b/assembly/dependencies-apache-ignite-lgpl.xml
index e976b6593e9..7d7e016459b 100644
--- a/assembly/dependencies-apache-ignite-lgpl.xml
+++ b/assembly/dependencies-apache-ignite-lgpl.xml
@@ -117,6 +117,7 @@
<exclude>${project.groupId}:ignite-core</exclude>
<exclude>${project.groupId}:ignite-commons</exclude>
<exclude>${project.groupId}:ignite-binary-api</exclude>
+ <exclude>${project.groupId}:ignite-binary-impl</exclude>
<exclude>${project.groupId}:ignite-clients</exclude>
<exclude>${project.groupId}:ignite-spring</exclude>
<exclude>${project.groupId}:ignite-tools</exclude>
diff --git a/assembly/dependencies-apache-ignite-slim.xml
b/assembly/dependencies-apache-ignite-slim.xml
index 90d639dd39b..53676f30737 100644
--- a/assembly/dependencies-apache-ignite-slim.xml
+++ b/assembly/dependencies-apache-ignite-slim.xml
@@ -117,6 +117,7 @@
<exclude>${project.groupId}:ignite-core</exclude>
<exclude>${project.groupId}:ignite-commons</exclude>
<exclude>${project.groupId}:ignite-binary-api</exclude>
+ <exclude>${project.groupId}:ignite-binary-impl</exclude>
<exclude>${project.groupId}:ignite-clients</exclude>
<exclude>${project.groupId}:ignite-spring</exclude>
<exclude>${project.groupId}:ignite-tools</exclude>
diff --git a/assembly/dependencies-apache-ignite.xml
b/assembly/dependencies-apache-ignite.xml
index c1560975ef0..54a200fb506 100644
--- a/assembly/dependencies-apache-ignite.xml
+++ b/assembly/dependencies-apache-ignite.xml
@@ -118,6 +118,7 @@
<exclude>${project.groupId}:ignite-core</exclude>
<exclude>${project.groupId}:ignite-commons</exclude>
<exclude>${project.groupId}:ignite-binary-api</exclude>
+ <exclude>${project.groupId}:ignite-binary-impl</exclude>
<exclude>${project.groupId}:ignite-clients</exclude>
<exclude>${project.groupId}:ignite-spring</exclude>
<exclude>${project.groupId}:ignite-tools</exclude>
diff --git a/modules/binary/api/README.txt b/modules/binary/api/README.txt
new file mode 100644
index 00000000000..3df8a0b837a
--- /dev/null
+++ b/modules/binary/api/README.txt
@@ -0,0 +1,9 @@
+Apache Ignite Binary API Module
+------------------------
+
+ignite-binary-api module is internal module to separate binary API and
implementation.
+Other modules like ignite-core must depend on ignite-binary-api, only.
+Implementation of API in ignite-binary-impl, it added in runtime.
+
+Note, class files of this module are copied in ignite-core.jar during project
assembly
+to ensure compatibility with previous Ignite releases.
\ No newline at end of file
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryPositionReadable.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryPositionReadable.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryPositionReadable.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryPositionReadable.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryInputStream.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryInputStream.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryInputStream.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryInputStream.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryMemoryAllocatorChunk.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryMemoryAllocatorChunk.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryMemoryAllocatorChunk.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryMemoryAllocatorChunk.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOutputStream.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOutputStream.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOutputStream.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOutputStream.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStream.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStream.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStream.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStream.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreams.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreams.java
similarity index 75%
copy from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreams.java
copy to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreams.java
index 4bd1f494a72..7aa287d2ccb 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreams.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreams.java
@@ -18,11 +18,28 @@
package org.apache.ignite.internal.binary.streams;
import java.nio.ByteBuffer;
+import java.util.Iterator;
+import org.apache.ignite.internal.util.CommonUtils;
+import org.apache.ignite.internal.util.typedef.internal.A;
/**
* Utility class to provide static methods to create {@link BinaryInputStream}
or {@link BinaryOutputStream} in different modes.
*/
public class BinaryStreams {
+ /** Streams factory implementation. */
+ private static final BinaryStreamsFactory factory;
+
+ static {
+ Iterator<BinaryStreamsFactory> factories =
CommonUtils.loadService(BinaryStreamsFactory.class).iterator();
+
+ A.ensure(
+ factories.hasNext(),
+ "Implementation for BinaryStreamsFactory service not found. Please
add ignite-binary-impl to classpath"
+ );
+
+ factory = factories.next();
+ }
+
/**
* Create stream with pointer set at the given position.
*
@@ -31,7 +48,7 @@ public class BinaryStreams {
* @return Stream.
*/
public static BinaryInputStream inputStream(byte[] data, int pos) {
- return BinaryHeapInputStream.create(data, pos);
+ return factory.inputStream(data, pos);
}
/**
@@ -41,7 +58,7 @@ public class BinaryStreams {
* @return Stream.
*/
public static BinaryInputStream inputStream(byte[] data) {
- return new BinaryHeapInputStream(data);
+ return factory.inputStream(data);
}
/**
@@ -49,7 +66,7 @@ public class BinaryStreams {
* @return Stream.
*/
public static BinaryInputStream inputStream(ByteBuffer buf) {
- return new BinaryByteBufferInputStream(buf);
+ return factory.inputStream(buf);
}
/**
@@ -58,7 +75,7 @@ public class BinaryStreams {
* @return Stream.
*/
public static BinaryInputStream inputStream(long ptr, int cap) {
- return new BinaryOffheapInputStream(ptr, cap);
+ return factory.inputStream(ptr, cap);
}
/**
@@ -69,7 +86,7 @@ public class BinaryStreams {
* @return Stream.
*/
public static BinaryInputStream inputStream(long ptr, int cap, boolean
forceHeap) {
- return new BinaryOffheapInputStream(ptr, cap, forceHeap);
+ return factory.inputStream(ptr, cap, forceHeap);
}
/**
@@ -79,7 +96,7 @@ public class BinaryStreams {
* @return Binary output stream data.
*/
public static BinaryOutputStream createPooledOutputStream(int cap, boolean
disableAutoClose) {
- return new BinaryHeapOutputStream(cap,
BinaryMemoryAllocator.POOLED.chunk(), disableAutoClose);
+ return factory.createPooledOutputStream(cap, disableAutoClose);
}
/**
@@ -87,7 +104,7 @@ public class BinaryStreams {
* @return Binary output stream data.
*/
public static BinaryOutputStream outputStream(int cap) {
- return new BinaryHeapOutputStream(cap);
+ return factory.outputStream(cap);
}
/**
@@ -96,13 +113,13 @@ public class BinaryStreams {
* @return Binary output stream.
*/
public static BinaryOutputStream outputStream(int cap,
BinaryMemoryAllocatorChunk chunk) {
- return new BinaryHeapOutputStream(cap, chunk);
+ return factory.outputStream(cap, chunk);
}
/**
* @return Thread local binary memory allocator.
*/
public static BinaryMemoryAllocatorChunk threadLocalChunk() {
- return BinaryMemoryAllocator.THREAD_LOCAL.chunk();
+ return factory.threadLocalChunk();
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreams.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreamsFactory.java
similarity index 60%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreams.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreamsFactory.java
index 4bd1f494a72..ad4d7df2b26 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreams.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreamsFactory.java
@@ -18,11 +18,17 @@
package org.apache.ignite.internal.binary.streams;
import java.nio.ByteBuffer;
+import java.util.ServiceLoader;
+import org.apache.ignite.internal.util.CommonUtils;
/**
- * Utility class to provide static methods to create {@link BinaryInputStream}
or {@link BinaryOutputStream} in different modes.
+ * Binary streams factory.
+ * Implementation loaded via {@link ServiceLoader} mechanism.
+ *
+ * @see CommonUtils#loadService(Class)
+ * @see BinaryStreams
*/
-public class BinaryStreams {
+public interface BinaryStreamsFactory {
/**
* Create stream with pointer set at the given position.
*
@@ -30,9 +36,7 @@ public class BinaryStreams {
* @param pos Position.
* @return Stream.
*/
- public static BinaryInputStream inputStream(byte[] data, int pos) {
- return BinaryHeapInputStream.create(data, pos);
- }
+ public BinaryInputStream inputStream(byte[] data, int pos);
/**
* Create stream with pointer set at the given position.
@@ -40,26 +44,20 @@ public class BinaryStreams {
* @param data Data.
* @return Stream.
*/
- public static BinaryInputStream inputStream(byte[] data) {
- return new BinaryHeapInputStream(data);
- }
+ public BinaryInputStream inputStream(byte[] data);
/**
* @param buf Buffer to wrap.
* @return Stream.
*/
- public static BinaryInputStream inputStream(ByteBuffer buf) {
- return new BinaryByteBufferInputStream(buf);
- }
+ public BinaryInputStream inputStream(ByteBuffer buf);
/**
* @param ptr Pointer.
* @param cap Capacity.
* @return Stream.
*/
- public static BinaryInputStream inputStream(long ptr, int cap) {
- return new BinaryOffheapInputStream(ptr, cap);
- }
+ public BinaryInputStream inputStream(long ptr, int cap);
/**
* @param ptr Pointer.
@@ -68,9 +66,7 @@ public class BinaryStreams {
* create heap-based objects.
* @return Stream.
*/
- public static BinaryInputStream inputStream(long ptr, int cap, boolean
forceHeap) {
- return new BinaryOffheapInputStream(ptr, cap, forceHeap);
- }
+ public BinaryInputStream inputStream(long ptr, int cap, boolean forceHeap);
/**
* @param cap Capacity.
@@ -78,31 +74,23 @@ public class BinaryStreams {
* so that an explicit {@link
BinaryOutputStream#release()} call is required.
* @return Binary output stream data.
*/
- public static BinaryOutputStream createPooledOutputStream(int cap, boolean
disableAutoClose) {
- return new BinaryHeapOutputStream(cap,
BinaryMemoryAllocator.POOLED.chunk(), disableAutoClose);
- }
+ public BinaryOutputStream createPooledOutputStream(int cap, boolean
disableAutoClose);
/**
* @param cap Capacity.
* @return Binary output stream data.
*/
- public static BinaryOutputStream outputStream(int cap) {
- return new BinaryHeapOutputStream(cap);
- }
+ public BinaryOutputStream outputStream(int cap);
/**
* @param cap Capacity.
* @param chunk Memory allocator chunk.
* @return Binary output stream.
*/
- public static BinaryOutputStream outputStream(int cap,
BinaryMemoryAllocatorChunk chunk) {
- return new BinaryHeapOutputStream(cap, chunk);
- }
+ public BinaryOutputStream outputStream(int cap, BinaryMemoryAllocatorChunk
chunk);
/**
* @return Thread local binary memory allocator.
*/
- public static BinaryMemoryAllocatorChunk threadLocalChunk() {
- return BinaryMemoryAllocator.THREAD_LOCAL.chunk();
- }
+ public BinaryMemoryAllocatorChunk threadLocalChunk();
}
diff --git a/modules/binary/impl/README.txt b/modules/binary/impl/README.txt
new file mode 100644
index 00000000000..ea2416062bb
--- /dev/null
+++ b/modules/binary/impl/README.txt
@@ -0,0 +1,8 @@
+Apache Ignite Binary Implementation Module
+------------------------
+
+ignite-binary-impl module is internal module to separate binary API and
implementation.
+Other modules like ignite-core must not depend on ignite-binary-impl, and use
ignite-binary-api.
+
+Note, class files of this module are copied in ignite-core.jar during project
assembly
+to ensure compatibility with previous Ignite releases.
\ No newline at end of file
diff --git a/modules/binary/impl/pom.xml b/modules/binary/impl/pom.xml
new file mode 100644
index 00000000000..b56dbf5b739
--- /dev/null
+++ b/modules/binary/impl/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+
+<!--
+ POM file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-parent-internal</artifactId>
+ <version>${revision}</version>
+ <relativePath>../../../parent-internal/pom.xml</relativePath>
+ </parent>
+
+ <artifactId>ignite-binary-impl</artifactId>
+
+ <url>http://ignite.apache.org</url>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-commons</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-binary-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-grid-unsafe</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jetbrains</groupId>
+ <artifactId>annotations</artifactId>
+ <version>${jetbrains.annotations.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <version>2.8.2</version>
+ <configuration>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractInputStream.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractInputStream.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractInputStream.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractInputStream.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractOutputStream.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractOutputStream.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractOutputStream.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractOutputStream.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractStream.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractStream.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractStream.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryAbstractStream.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryByteBufferInputStream.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryByteBufferInputStream.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryByteBufferInputStream.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryByteBufferInputStream.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryHeapInputStream.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryHeapInputStream.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryHeapInputStream.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryHeapInputStream.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryHeapOutputStream.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryHeapOutputStream.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryHeapOutputStream.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryHeapOutputStream.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryMemoryAllocator.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryMemoryAllocator.java
similarity index 92%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryMemoryAllocator.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryMemoryAllocator.java
index b2b16a1ec26..b4f24f48ae8 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryMemoryAllocator.java
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryMemoryAllocator.java
@@ -19,12 +19,12 @@ package org.apache.ignite.internal.binary.streams;
import java.util.ArrayDeque;
import java.util.Arrays;
-import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.util.CommonUtils;
-import static
org.apache.ignite.IgniteSystemProperties.IGNITE_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE;
-import static
org.apache.ignite.IgniteSystemProperties.IGNITE_MARSHAL_BUFFERS_RECHECK;
-import static
org.apache.ignite.internal.binary.BinaryUtils.DFLT_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE;
-import static
org.apache.ignite.internal.binary.BinaryUtils.DFLT_MARSHAL_BUFFERS_RECHECK;
+import static
org.apache.ignite.IgniteCommonsSystemProperties.IGNITE_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE;
+import static
org.apache.ignite.IgniteCommonsSystemProperties.IGNITE_MARSHAL_BUFFERS_RECHECK;
+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;
/**
* On-heap memory allocator.
@@ -129,7 +129,7 @@ abstract class BinaryMemoryAllocator {
long nowNanos = System.nanoTime();
- if (U.nanosToMillis(nowNanos - lastCheckNanos) >= CHECK_FREQ) {
+ if (CommonUtils.nanosToMillis(nowNanos - lastCheckNanos) >=
CHECK_FREQ) {
int halfSize = data.length >> 1;
if (this.maxMsgSize < halfSize)
@@ -212,12 +212,12 @@ abstract class BinaryMemoryAllocator {
cntr = cntr == Integer.MAX_VALUE ? 0 : cntr + 1;
long now = System.nanoTime();
- if (U.nanosToMillis(now - lastCheckNanos) >= CHECK_FREQ &&
cntr > history.length) {
+ if (CommonUtils.nanosToMillis(now - lastCheckNanos) >=
CHECK_FREQ && cntr > history.length) {
lastCheckNanos = now;
int[] tmp = Arrays.copyOf(history, history.length);
Arrays.sort(tmp);
- int adjusted = U.nextPowerOf2(tmp[tmp.length / 2]);
+ int adjusted = CommonUtils.nextPowerOf2(tmp[tmp.length /
2]);
if (adjusted < data.length)
data = new byte[adjusted];
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOffheapInputStream.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOffheapInputStream.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOffheapInputStream.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOffheapInputStream.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOffheapOutputStream.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOffheapOutputStream.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOffheapOutputStream.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryOffheapOutputStream.java
diff --git
a/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreamsFactoryImpl.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreamsFactoryImpl.java
new file mode 100644
index 00000000000..40f0b9f1113
--- /dev/null
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/streams/BinaryStreamsFactoryImpl.java
@@ -0,0 +1,72 @@
+/*
+ * 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.binary.streams;
+
+import java.nio.ByteBuffer;
+import org.apache.ignite.internal.util.CommonUtils;
+
+/**
+ * Binary streams factory implementation.
+ * @see CommonUtils#loadService(Class)
+ */
+public class BinaryStreamsFactoryImpl implements BinaryStreamsFactory {
+ /** {@inheritDoc} */
+ @Override public BinaryInputStream inputStream(byte[] data, int pos) {
+ return BinaryHeapInputStream.create(data, pos);
+ }
+
+ /** {@inheritDoc} */
+ @Override public BinaryInputStream inputStream(byte[] data) {
+ return new BinaryHeapInputStream(data);
+ }
+
+ /** {@inheritDoc} */
+ @Override public BinaryInputStream inputStream(ByteBuffer buf) {
+ return new BinaryByteBufferInputStream(buf);
+ }
+
+ /** {@inheritDoc} */
+ @Override public BinaryInputStream inputStream(long ptr, int cap) {
+ return new BinaryOffheapInputStream(ptr, cap);
+ }
+
+ /** {@inheritDoc} */
+ @Override public BinaryInputStream inputStream(long ptr, int cap, boolean
forceHeap) {
+ return new BinaryOffheapInputStream(ptr, cap, forceHeap);
+ }
+
+ /** {@inheritDoc} */
+ @Override public BinaryOutputStream createPooledOutputStream(int cap,
boolean disableAutoClose) {
+ return new BinaryHeapOutputStream(cap,
BinaryMemoryAllocator.POOLED.chunk(), disableAutoClose);
+ }
+
+ /** {@inheritDoc} */
+ @Override public BinaryOutputStream outputStream(int cap) {
+ return new BinaryHeapOutputStream(cap);
+ }
+
+ /** {@inheritDoc} */
+ @Override public BinaryOutputStream outputStream(int cap,
BinaryMemoryAllocatorChunk chunk) {
+ return new BinaryHeapOutputStream(cap, chunk);
+ }
+
+ /** {@inheritDoc} */
+ @Override public BinaryMemoryAllocatorChunk threadLocalChunk() {
+ return BinaryMemoryAllocator.THREAD_LOCAL.chunk();
+ }
+}
diff --git
a/modules/binary/impl/src/main/resources/META-INF/services/org.apache.ignite.internal.binary.streams.BinaryStreamsFactory
b/modules/binary/impl/src/main/resources/META-INF/services/org.apache.ignite.internal.binary.streams.BinaryStreamsFactory
new file mode 100644
index 00000000000..0862373ed81
--- /dev/null
+++
b/modules/binary/impl/src/main/resources/META-INF/services/org.apache.ignite.internal.binary.streams.BinaryStreamsFactory
@@ -0,0 +1 @@
+org.apache.ignite.internal.binary.streams.BinaryStreamsFactoryImpl
\ No newline at end of file
diff --git a/modules/bom/pom.xml b/modules/bom/pom.xml
index bd67b5d4332..db4ee73a175 100644
--- a/modules/bom/pom.xml
+++ b/modules/bom/pom.xml
@@ -171,6 +171,11 @@
<artifactId>ignite-binary-api</artifactId>
<version>${revision}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-binary-impl</artifactId>
+ <version>${revision}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>ignite-commons</artifactId>
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 08db4e746c0..b0957c244c5 100644
---
a/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
+++
b/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
@@ -19,6 +19,8 @@ package org.apache.ignite;
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.tostring.GridToStringBuilder.DFLT_TO_STRING_COLLECTION_LIMIT;
import static
org.apache.ignite.internal.util.tostring.GridToStringBuilder.DFLT_TO_STRING_INCLUDE_SENSITIVE;
@@ -68,6 +70,21 @@ public class IgniteCommonsSystemProperties {
"meaning that unaligned access will be performed only on x86
architecture")
public static final String IGNITE_MEMORY_UNALIGNED_ACCESS =
"IGNITE_MEMORY_UNALIGNED_ACCESS";
+ /**
+ * System property to specify how often in milliseconds marshal buffers
+ * should be rechecked and potentially trimmed. Default value is {@code
10,000ms}.
+ */
+ @SystemProperty(value = "How often in milliseconds marshal buffers should
be rechecked and potentially trimmed",
+ type = Long.class, defaults = "" + DFLT_MARSHAL_BUFFERS_RECHECK)
+ public static final String IGNITE_MARSHAL_BUFFERS_RECHECK =
"IGNITE_MARSHAL_BUFFERS_RECHECK";
+
+ /**
+ * System property to specify per thread binary allocator chunk pool size.
Default value is {@code 32}.
+ */
+ @SystemProperty(value = "Per thread binary allocator chunk pool size",
+ 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";
+
/**
* @param enumCls Enum type.
* @param name Name of the system property or environment variable.
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 e491a0f4e82..3eef1ac12d2 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
@@ -20,9 +20,14 @@ package org.apache.ignite.internal.util;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.ServiceLoader;
+import java.util.concurrent.TimeUnit;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteCommonsSystemProperties;
import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.A;
import org.jetbrains.annotations.Nullable;
/**
@@ -41,6 +46,12 @@ public abstract class CommonUtils {
/** @see
IgniteCommonsSystemProperties#IGNITE_MEMORY_PER_BYTE_COPY_THRESHOLD */
public static final long DFLT_MEMORY_PER_BYTE_COPY_THRESHOLD = 0L;
+ /** @see IgniteCommonsSystemProperties#IGNITE_MARSHAL_BUFFERS_RECHECK */
+ public static final int DFLT_MARSHAL_BUFFERS_RECHECK = 10000;
+
+ /** @see
IgniteCommonsSystemProperties#IGNITE_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE */
+ public static final int DFLT_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE = 32;
+
/** Sun-specific JDK constructor factory for objects that don't have empty
constructor. */
private static final Method CTOR_FACTORY;
@@ -244,4 +255,83 @@ public abstract class CommonUtils {
return (int)y;
}
+
+ /**
+ * @param svcCls Service class to load.
+ * @param <S> Type of loaded interfaces.
+ * @return Lazy iterable structure over loaded class implementations.
+ */
+ public static <S> Iterable<S> loadService(Class<S> svcCls) {
+ return AccessController.doPrivileged(new
PrivilegedAction<Iterable<S>>() {
+ @Override public Iterable<S> run() {
+ return ServiceLoader.load(svcCls);
+ }
+ });
+ }
+
+ /**
+ * Convert milliseconds time interval to nanoseconds.
+ *
+ * @param millis Original time interval.
+ * @return Calculated time interval.
+ */
+ public static long millisToNanos(long millis) {
+ return TimeUnit.MILLISECONDS.toNanos(millis);
+ }
+
+ /**
+ * Convert nanoseconds time interval to milliseconds.
+ *
+ * @param nanos Original time interval.
+ * @return Calculated time interval.
+ */
+ public static long nanosToMillis(long nanos) {
+ return TimeUnit.NANOSECONDS.toMillis(nanos);
+ }
+
+ /**
+ * Returns number of milliseconds passed after the given nanos timestamp.
+ *
+ * @param nanos Nanos timestamp.
+ * @return Number of milliseconds passed after the given nanos timestamp.
+ * @see System#nanoTime()
+ */
+ public static long millisSinceNanos(long nanos) {
+ return nanosToMillis(System.nanoTime() - nanos);
+ }
+
+ /**
+ * Gets nearest power of 2 larger or equal than v.
+ *
+ * @param v Value.
+ * @return Nearest power of 2.
+ */
+ public static int ceilPow2(int v) {
+ int i = v - 1;
+
+ return Integer.highestOneBit(i) << 1 - (i >>> 30 ^ v >> 31);
+ }
+
+ /**
+ * @param i Value.
+ * @return {@code true} If the given value is power of 2 (0 is not power
of 2).
+ */
+ public static boolean isPow2(int i) {
+ return i > 0 && (i & (i - 1)) == 0;
+ }
+
+ /**
+ * Round up the argument to the next highest power of 2;
+ *
+ * @param v Value to round up.
+ * @return Next closest power of 2.
+ */
+ public static int nextPowerOf2(int v) {
+ A.ensure(v >= 0, "v must not be negative");
+
+ if (v == 0)
+ return 1;
+
+ return 1 << (32 - Integer.numberOfLeadingZeros(v - 1));
+ }
}
diff --git a/modules/core/pom.xml b/modules/core/pom.xml
index 4d6fd825bb2..f2f5bb93336 100644
--- a/modules/core/pom.xml
+++ b/modules/core/pom.xml
@@ -68,6 +68,12 @@
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-binary-impl</artifactId>
+ <scope>compile</scope>
+ </dependency>
+
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>ignite-codegen2</artifactId>
@@ -345,6 +351,7 @@
<includes>
<include>org.apache.ignite:ignite-commons</include>
<include>org.apache.ignite:ignite-binary-api</include>
+
<include>org.apache.ignite:ignite-binary-impl</include>
<include>org.apache.ignite:ignite-grid-unsafe</include>
</includes>
</artifactSet>
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 35b0d06165f..c513375495b 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -59,8 +59,6 @@ import static
org.apache.ignite.internal.LongJVMPauseDetector.DEFAULT_JVM_PAUSE_
import static
org.apache.ignite.internal.LongJVMPauseDetector.DFLT_JVM_PAUSE_DETECTOR_LAST_EVENTS_COUNT;
import static
org.apache.ignite.internal.LongJVMPauseDetector.DFLT_JVM_PAUSE_DETECTOR_PRECISION;
import static
org.apache.ignite.internal.binary.BinaryUtils.DFLT_IGNITE_USE_BINARY_ARRAYS;
-import static
org.apache.ignite.internal.binary.BinaryUtils.DFLT_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE;
-import static
org.apache.ignite.internal.binary.BinaryUtils.DFLT_MARSHAL_BUFFERS_RECHECK;
import static
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineRecommender.DFLT_THROTTLE_INLINE_SIZE_CALCULATION;
import static
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.DFLT_DISCOVERY_HISTORY_SIZE;
import static
org.apache.ignite.internal.processors.affinity.AffinityAssignment.DFLT_AFFINITY_BACKUPS_THRESHOLD;
@@ -501,21 +499,6 @@ public final class IgniteSystemProperties extends
IgniteCommonsSystemProperties
defaults = "" + DFLT_PRELOAD_RESEND_TIMEOUT)
public static final String IGNITE_PRELOAD_RESEND_TIMEOUT =
"IGNITE_PRELOAD_RESEND_TIMEOUT";
- /**
- * System property to specify how often in milliseconds marshal buffers
- * should be rechecked and potentially trimmed. Default value is {@code
10,000ms}.
- */
- @SystemProperty(value = "How often in milliseconds marshal buffers should
be rechecked and potentially trimmed",
- type = Long.class, defaults = "" + DFLT_MARSHAL_BUFFERS_RECHECK)
- public static final String IGNITE_MARSHAL_BUFFERS_RECHECK =
"IGNITE_MARSHAL_BUFFERS_RECHECK";
-
- /**
- * System property to specify per thread binary allocator chunk pool size.
Default value is {@code 32}.
- */
- @SystemProperty(value = "Per thread binary allocator chunk pool size",
- 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";
-
/**
* System property to disable {@link HostnameVerifier} for SSL connections.
* Can be used for development with self-signed certificates. Default
value is {@code false}.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
index 7fff65e3721..cedac3b1a24 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
@@ -100,12 +100,6 @@ import static
org.apache.ignite.internal.util.GridUnsafe.align;
* Binary utils.
*/
public class BinaryUtils {
- /** @see IgniteSystemProperties#IGNITE_MARSHAL_BUFFERS_RECHECK */
- public static final int DFLT_MARSHAL_BUFFERS_RECHECK = 10000;
-
- /** @see
IgniteSystemProperties#IGNITE_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE */
- public static final int DFLT_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE = 32;
-
/**
* Actual file name "{type_id}.classname{platform_id}".
* Where {@code type_id} is integer type id and {@code platform_id} is
byte from {@link PlatformType}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index f21b0dc2cc9..4f86eb8023f 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
@@ -79,8 +79,6 @@ import java.nio.charset.Charset;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.security.ProtectionDomain;
import java.sql.Connection;
import java.sql.SQLException;
@@ -106,7 +104,6 @@ import java.util.Map;
import java.util.Objects;
import java.util.Properties;
import java.util.Random;
-import java.util.ServiceLoader;
import java.util.Set;
import java.util.TreeMap;
import java.util.UUID;
@@ -868,19 +865,6 @@ public abstract class IgniteUtils extends CommonUtils {
Collections.emptyList();
}
- /**
- * @param svcCls Service class to load.
- * @param <S> Type of loaded interfaces.
- * @return Lazy iterable structure over loaded class implementations.
- */
- public static <S> Iterable<S> loadService(Class<S> svcCls) {
- return AccessController.doPrivileged(new
PrivilegedAction<Iterable<S>>() {
- @Override public Iterable<S> run() {
- return ServiceLoader.load(svcCls);
- }
- });
- }
-
/**
* Converts exception, but unlike {@link
#convertException(IgniteCheckedException)}
* does not wrap passed in exception if none suitable converter found.
@@ -940,57 +924,6 @@ public abstract class IgniteUtils extends CommonUtils {
return curTimeMillis;
}
- /**
- * Convert milliseconds time interval to nanoseconds.
- *
- * @param millis Original time interval.
- * @return Calculated time interval.
- */
- public static long millisToNanos(long millis) {
- return TimeUnit.MILLISECONDS.toNanos(millis);
- }
-
- /**
- * Convert nanoseconds time interval to milliseconds.
- *
- * @param nanos Original time interval.
- * @return Calculated time interval.
- */
- public static long nanosToMillis(long nanos) {
- return TimeUnit.NANOSECONDS.toMillis(nanos);
- }
-
- /**
- * Returns number of milliseconds passed after the given nanos timestamp.
- *
- * @param nanos Nanos timestamp.
- * @return Number of milliseconds passed after the given nanos timestamp.
- * @see System#nanoTime()
- */
- public static long millisSinceNanos(long nanos) {
- return nanosToMillis(System.nanoTime() - nanos);
- }
-
- /**
- * Gets nearest power of 2 larger or equal than v.
- *
- * @param v Value.
- * @return Nearest power of 2.
- */
- public static int ceilPow2(int v) {
- int i = v - 1;
-
- return Integer.highestOneBit(i) << 1 - (i >>> 30 ^ v >> 31);
- }
-
- /**
- * @param i Value.
- * @return {@code true} If the given value is power of 2 (0 is not power
of 2).
- */
- public static boolean isPow2(int i) {
- return i > 0 && (i & (i - 1)) == 0;
- }
-
/**
* Gets name for given grid event type.
*
@@ -7022,21 +6955,6 @@ public abstract class IgniteUtils extends CommonUtils {
}
}
- /**
- * Round up the argument to the next highest power of 2;
- *
- * @param v Value to round up.
- * @return Next closest power of 2.
- */
- public static int nextPowerOf2(int v) {
- A.ensure(v >= 0, "v must not be negative");
-
- if (v == 0)
- return 1;
-
- return 1 << (32 - Integer.numberOfLeadingZeros(v - 1));
- }
-
/**
* Gets absolute value for integer. If integer is {@link
Integer#MIN_VALUE}, then {@code 0} is returned.
*
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataInput.java
b/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataInput.java
index 19a71e486bf..08666e0fa63 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataInput.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataInput.java
@@ -28,7 +28,7 @@ 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.binary.BinaryUtils.DFLT_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;
import static org.apache.ignite.internal.util.GridUnsafe.CHAR_ARR_OFF;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataOutput.java
b/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataOutput.java
index 7314a71bbef..f2331d84a09 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataOutput.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/util/io/GridUnsafeDataOutput.java
@@ -25,7 +25,7 @@ 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.binary.BinaryUtils.DFLT_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;
import static org.apache.ignite.internal.util.GridUnsafe.BYTE_ARR_OFF;
diff --git a/pom.xml b/pom.xml
index 3d3fc9c4b94..d1cf7cd2cb4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,6 +41,7 @@
<module>modules/tools</module>
<module>modules/commons</module>
<module>modules/binary/api</module>
+ <module>modules/binary/impl</module>
<module>modules/unsafe</module>
<module>modules/core</module>
<module>modules/compress</module>