Repository: flink
Updated Branches:
  refs/heads/master b6afc06ab -> 2bfead7d9


[FLINK-6589] [core] Deserialize ArrayList with capacity of size+1 to prevent 
growth.

This closes #3912.


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

Branch: refs/heads/master
Commit: 2bfead7d9bef51713ed203fa7979f71f23525733
Parents: d85d969
Author: Fabian Hueske <[email protected]>
Authored: Mon May 15 21:41:51 2017 +0200
Committer: Fabian Hueske <[email protected]>
Committed: Wed May 17 15:24:23 2017 +0200

----------------------------------------------------------------------
 .../apache/flink/api/common/typeutils/base/ListSerializer.java  | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/2bfead7d/flink-core/src/main/java/org/apache/flink/api/common/typeutils/base/ListSerializer.java
----------------------------------------------------------------------
diff --git 
a/flink-core/src/main/java/org/apache/flink/api/common/typeutils/base/ListSerializer.java
 
b/flink-core/src/main/java/org/apache/flink/api/common/typeutils/base/ListSerializer.java
index aa9808e..1f271fe 100644
--- 
a/flink-core/src/main/java/org/apache/flink/api/common/typeutils/base/ListSerializer.java
+++ 
b/flink-core/src/main/java/org/apache/flink/api/common/typeutils/base/ListSerializer.java
@@ -82,7 +82,7 @@ public final class ListSerializer<T> extends 
TypeSerializer<List<T>> {
        @Override
        public TypeSerializer<List<T>> duplicate() {
                TypeSerializer<T> duplicateElement = 
elementSerializer.duplicate();
-               return duplicateElement == elementSerializer ? this : new 
ListSerializer<T>(duplicateElement);
+               return duplicateElement == elementSerializer ? this : new 
ListSerializer<>(duplicateElement);
        }
 
        @Override
@@ -129,7 +129,8 @@ public final class ListSerializer<T> extends 
TypeSerializer<List<T>> {
        @Override
        public List<T> deserialize(DataInputView source) throws IOException {
                final int size = source.readInt();
-               final List<T> list = new ArrayList<>(size);
+               // create new list with (size + 1) capacity to prevent 
expensive growth when a single element is added
+               final List<T> list = new ArrayList<>(size + 1);
                for (int i = 0; i < size; i++) {
                        list.add(elementSerializer.deserialize(source));
                }

Reply via email to