From aa20d61c303be21f8cc1c015601f1e63f76e54a0 Mon Sep 17 00:00:00 2001 From: Jonathan Hart Date: Fri, 25 Mar 2016 11:14:29 -0700 Subject: [PATCH] Upgrade Kryo to 3.0.3. Possible fix for ONOS-4206. Change-Id: I6782559b294297f6d929bda49ca6c0fc982cd672 --- features/features.xml | 4 +-- pom.xml | 2 +- .../java/org/onlab/util/KryoNamespace.java | 25 +++++++++++-------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/features/features.xml b/features/features.xml index a112db7f21..fd3caba2a8 100644 --- a/features/features.xml +++ b/features/features.xml @@ -40,11 +40,11 @@ mvn:io.dropwizard.metrics/metrics-json/3.1.2 mvn:com.eclipsesource.minimal-json/minimal-json/0.9.1 - mvn:com.esotericsoftware/kryo/3.0.0 + mvn:com.esotericsoftware/kryo/3.0.3 mvn:com.esotericsoftware/reflectasm/1.11.0 mvn:org.ow2.asm/asm/4.2 mvn:com.esotericsoftware/minlog/1.3.0 - mvn:org.objenesis/objenesis/2.1 + mvn:org.objenesis/objenesis/2.2 mvn:com.fasterxml.jackson.core/jackson-core/2.7.0 mvn:com.fasterxml.jackson.core/jackson-annotations/2.7.0 diff --git a/pom.xml b/pom.xml index d0ca5449f9..1fdaa8bacf 100644 --- a/pom.xml +++ b/pom.xml @@ -308,7 +308,7 @@ com.esotericsoftware kryo - 3.0.0 + 3.0.3 com.esotericsoftware diff --git a/utils/misc/src/main/java/org/onlab/util/KryoNamespace.java b/utils/misc/src/main/java/org/onlab/util/KryoNamespace.java index f5d2f9b1b6..dc147d2b83 100644 --- a/utils/misc/src/main/java/org/onlab/util/KryoNamespace.java +++ b/utils/misc/src/main/java/org/onlab/util/KryoNamespace.java @@ -15,17 +15,6 @@ */ package org.onlab.util; -import static org.slf4j.LoggerFactory.getLogger; - -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.tuple.Pair; -import org.slf4j.Logger; - import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; import com.esotericsoftware.kryo.io.ByteBufferInput; @@ -36,6 +25,17 @@ import com.esotericsoftware.kryo.pool.KryoFactory; import com.esotericsoftware.kryo.pool.KryoPool; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; +import org.apache.commons.lang3.tuple.Pair; +import org.objenesis.strategy.StdInstantiatorStrategy; +import org.slf4j.Logger; + +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +import static org.slf4j.LoggerFactory.getLogger; /** * Pool of Kryo instances, with classes pre-registered. @@ -381,6 +381,9 @@ public final class KryoNamespace implements KryoFactory, KryoPool { public Kryo create() { Kryo kryo = new Kryo(); kryo.setRegistrationRequired(registrationRequired); + // TODO rethink whether we want to use StdInstantiatorStrategy + kryo.setInstantiatorStrategy( + new Kryo.DefaultInstantiatorStrategy(new StdInstantiatorStrategy())); for (RegistrationBlock block : registeredBlocks) { int id = block.begin(); if (id == FLOATING_ID) {