You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by il...@apache.org on 2021/03/16 12:46:39 UTC

[ignite] branch master updated: IGNITE-8635 Add a Method to Inspect BinaryObject Size - Fixes #8868.

This is an automated email from the ASF dual-hosted git repository.

ilyak 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 ea41746  IGNITE-8635 Add a Method to Inspect BinaryObject Size - Fixes #8868.
ea41746 is described below

commit ea417467df05d98ca69a08de02c358b0f81bb6f5
Author: Atri Sharma <at...@gmail.com>
AuthorDate: Tue Mar 16 15:36:17 2021 +0300

    IGNITE-8635 Add a Method to Inspect BinaryObject Size - Fixes #8868.
    
    Signed-off-by: Ilya Kasnacheev <il...@gmail.com>
---
 .../main/java/org/apache/ignite/binary/BinaryObject.java   |  6 ++++++
 .../ignite/internal/binary/BinaryEnumObjectImpl.java       | 14 ++++++++++++++
 .../apache/ignite/internal/binary/BinaryObjectImpl.java    |  5 +++++
 .../ignite/internal/binary/BinaryObjectOffheapImpl.java    |  5 +++++
 .../apache/ignite/internal/binary/BinaryEnumsSelfTest.java |  1 +
 .../binary/BinaryFooterOffsetsAbstractSelfTest.java        |  2 ++
 .../ignite/internal/binary/BinaryMarshallerSelfTest.java   |  1 +
 7 files changed, 34 insertions(+)

diff --git a/modules/core/src/main/java/org/apache/ignite/binary/BinaryObject.java b/modules/core/src/main/java/org/apache/ignite/binary/BinaryObject.java
index d6ac766..b525793 100644
--- a/modules/core/src/main/java/org/apache/ignite/binary/BinaryObject.java
+++ b/modules/core/src/main/java/org/apache/ignite/binary/BinaryObject.java
@@ -181,4 +181,10 @@ public interface BinaryObject extends Serializable, Cloneable {
      * @throws BinaryObjectException If object is not enum.
      */
     public String enumName() throws BinaryObjectException;
+
+    /**
+     * Get the size of the object
+     * @return Size of the object
+     */
+    public int size();
 }
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
index b8a3bc2..c09cda1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
@@ -473,4 +473,18 @@ public class BinaryEnumObjectImpl implements BinaryObjectEx, Externalizable, Cac
 
         return reader.afterMessageRead(BinaryEnumObjectImpl.class);
     }
+
+    /** {@inheritDoc} */
+    @Override public int size() {
+        if (valBytes == null) {
+            try {
+                valBytes = U.marshal(ctx.marshaller(), this);
+            }
+            catch (IgniteCheckedException e) {
+                throw U.convertException(e);
+            }
+        }
+
+        return BinaryPrimitives.readInt(valBytes, ord + GridBinaryMarshaller.TOTAL_LEN_POS);
+    }
 }
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
index 6b4eea2..ef654cc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
@@ -936,6 +936,11 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
     }
 
     /** {@inheritDoc} */
+    @Override public int size() {
+        return length();
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         if (arr == null || ctx == null)
             return "BinaryObjectImpl [arr= " + (arr != null) + ", ctx=" + (ctx != null) + ", start=" + start + "]";
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
index b9ff9c2..a35683e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
@@ -519,6 +519,11 @@ public class BinaryObjectOffheapImpl extends BinaryObjectExImpl implements Exter
         // No-op.
     }
 
+    /** {@inheritDoc} */
+    @Override public int size() {
+        return length();
+    }
+
     /**
      * @return Deserialized value.
      */
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryEnumsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryEnumsSelfTest.java
index 6140c9c..b4b7207 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryEnumsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryEnumsSelfTest.java
@@ -255,6 +255,7 @@ public class BinaryEnumsSelfTest extends GridCommonAbstractTest {
 
         BinaryEnumObjectImpl binEnum = new BinaryEnumObjectImpl(binCtx, bytes);
 
+        assertEquals(srcBinEnum.size(), binEnum.size());
         assertEquals(clsName, binEnum.className());
         assertEquals(typeId, binEnum.typeId());
         assertEquals(ord, binEnum.enumOrdinal());
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java
index f9b894c..53211c5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java
@@ -136,6 +136,8 @@ public abstract class BinaryFooterOffsetsAbstractSelfTest extends GridCommonAbst
 
         BinaryObjectExImpl portObj = toBinary(marsh, obj);
 
+        assertEquals(portObj.size(), portObj.length());
+
         // 1. Test binary object content.
         assert portObj.hasField("field1");
         assert portObj.hasField("field2");
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
index ab2fa88..f48bf9a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
@@ -2644,6 +2644,7 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
                 obj.array().length);
 
             assertTrue(offheapObj.equals(offheapObj));
+            assertEquals(offheapObj.size(), obj.size());
             assertFalse(offheapObj.equals(null));
             assertFalse(offheapObj.equals("str"));
             assertTrue(offheapObj.equals(obj));