Repository: ignite Updated Branches: refs/heads/ignite-2225 [created] c234469d6
IGNITE-2225: Fixed unnecessary deserializations. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c234469d Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c234469d Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c234469d Branch: refs/heads/ignite-2225 Commit: c234469d6da3e0a253b4df30c0830720f48e7b78 Parents: d8576b8 Author: vozerov-gridgain <voze...@gridgain.com> Authored: Tue Dec 22 09:53:10 2015 +0300 Committer: vozerov-gridgain <voze...@gridgain.com> Committed: Tue Dec 22 09:53:10 2015 +0300 ---------------------------------------------------------------------- .../ignite/internal/binary/GridBinaryMarshaller.java | 10 ++++++++++ .../cache/binary/CacheObjectBinaryProcessorImpl.java | 3 +++ 2 files changed, 13 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/c234469d/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java index b21c679..71ca018 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java @@ -268,6 +268,16 @@ public class GridBinaryMarshaller { } /** + * Whether object must be deserialized anyway. I.e. it cannot be converted to BinaryObject. + * + * @param obj Object. + * @return {@code True} if object will be deserialized on unmarshal. + */ + public boolean mustDeserialize(Object obj) { + return obj != null && ctx.mustDeserialize(obj.getClass()); + } + + /** * Gets writer for the given output stream. * * @param out Output stream. http://git-wip-us.apache.org/repos/asf/ignite/blob/c234469d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java index 6aee7a9..b335179 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java @@ -435,6 +435,9 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm return new GridMapEntry<>(marshalToBinary(e.getKey()), marshalToBinary(e.getValue())); } + if (binaryMarsh.mustDeserialize(obj)) + return obj; // No need to go through marshal-unmarshal because result will be the same as initial object. + byte[] arr = binaryMarsh.marshal(obj); assert arr.length > 0;