[FLINK-8584] handle read-only buffers in deserializer

Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/329f0961
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/329f0961
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/329f0961

Branch: refs/heads/master
Commit: 329f096149a83e73b38a4efef607199673e429ca
Parents: eb96d5d
Author: Piotr Nowojski <piotr.nowoj...@gmail.com>
Authored: Wed Jan 24 15:41:22 2018 +0100
Committer: Piotr Nowojski <piotr.nowoj...@gmail.com>
Committed: Mon Feb 19 12:21:26 2018 +0100

----------------------------------------------------------------------
 .../java/org/apache/flink/core/memory/DataInputDeserializer.java  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/329f0961/flink-core/src/main/java/org/apache/flink/core/memory/DataInputDeserializer.java
----------------------------------------------------------------------
diff --git 
a/flink-core/src/main/java/org/apache/flink/core/memory/DataInputDeserializer.java
 
b/flink-core/src/main/java/org/apache/flink/core/memory/DataInputDeserializer.java
index 088f9d2..11973e8 100644
--- 
a/flink-core/src/main/java/org/apache/flink/core/memory/DataInputDeserializer.java
+++ 
b/flink-core/src/main/java/org/apache/flink/core/memory/DataInputDeserializer.java
@@ -64,7 +64,8 @@ public class DataInputDeserializer implements DataInputView, 
java.io.Serializabl
                        this.buffer = buffer.array();
                        this.position = buffer.arrayOffset() + 
buffer.position();
                        this.end = this.position + buffer.remaining();
-               } else if (buffer.isDirect()) {
+               } else if (buffer.isDirect() || buffer.isReadOnly()) {
+                       // TODO: FLINK-8585 handle readonly and other non array 
based buffers more efficiently without data copy
                        this.buffer = new byte[buffer.remaining()];
                        this.position = 0;
                        this.end = this.buffer.length;

Reply via email to