You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wicket.apache.org by Joachim Rohde <ma...@joachimrohde.com> on 2014/10/17 00:44:26 UTC
Failure of Kyro serializer due to latest changes in Wicket snapshot?
Hi,
I realized today that the unit tests of the Kryo serializers (and the
fast serializer) in the Wickestuff project were failing since (at least)
yesterday (16th october). The last successful build according to
https://travis-ci.org/wicketstuff/core/builds was on the 13th.
For example
https://github.com/wicketstuff/core/blob/master/jdk-1.7-parent/serializer-kryo/src/test/java/org/wicketstuff/pageserializer/kryo/KryoSerializerTest.java
fails with
Running org.wicketstuff.pageserializer.kryo.KryoSerializerTest
DEBUG - KryoSerializer - Buffer size: '500 bytes'
DEBUG - KryoSerializer - Going to serialize: '[Page class =
org.wicketstuff.pageserializer.kryo.HomePage, id = 0, render count = 1]'
ERROR - DebuggingKryo - Wrote '146' bytes for object:
'class org.apache.wicket.markup.html.basic.Label'
ERROR - DebuggingKryo - Wrote '269' bytes for object:
'class org.apache.wicket.ajax.markup.html.AjaxLink$1'
ERROR - DebuggingKryo - Wrote '320' bytes for object:
'class org.apache.wicket.ajax.markup.html.AjaxLink$1'
ERROR - DebuggingKryo - Wrote '320' bytes for object:
'class org.apache.wicket.Behaviors$BehaviorIdList'
ERROR - DebuggingKryo - Wrote '340' bytes for object:
'class org.wicketstuff.pageserializer.kryo.HomePage$1'
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.724
sec <<< FAILURE! - in org.wicketstuff.pageserializer.kryo.KryoSerializerTest
homepageRendersSuccessfully(org.wicketstuff.pageserializer.kryo.KryoSerializerTest)
Time elapsed: 0.678 sec <<< ERROR!
com.esotericsoftware.kryo.SerializationException: Buffer limit exceeded
writing object of type: org.wicketstuff.pageserializer.kryo.HomePage
at java.nio.Buffer.nextPutIndex(Buffer.java:521)
at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:169)
at
com.esotericsoftware.kryo.serialize.StringSerializer.put(StringSerializer.java:35)
at
com.esotericsoftware.kryo.serialize.StringSerializer.writeObjectData(StringSerializer.java:24)
at com.esotericsoftware.kryo.Serializer.writeObject(Serializer.java:43)
at
com.esotericsoftware.kryo.serialize.FieldSerializer.writeObjectData(FieldSerializer.java:182)
at
com.esotericsoftware.kryo.serialize.ReferenceFieldSerializer.writeObjectData(ReferenceFieldSerializer.java:52)
at
com.esotericsoftware.kryo.serialize.FieldSerializer.writeObjectData(FieldSerializer.java:175)
at
com.esotericsoftware.kryo.serialize.ReferenceFieldSerializer.writeObjectData(ReferenceFieldSerializer.java:52)
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:489)
at
org.wicketstuff.pageserializer.kryo.DebuggingKryo.writeClassAndObject(DebuggingKryo.java:57)
at
com.esotericsoftware.kryo.serialize.ArraySerializer.writeArray(ArraySerializer.java:123)
at
com.esotericsoftware.kryo.serialize.ArraySerializer.writeObjectData(ArraySerializer.java:88)
at
com.esotericsoftware.kryo.serialize.FieldSerializer.writeObjectData(FieldSerializer.java:175)
at
com.esotericsoftware.kryo.serialize.FieldSerializer.writeObjectData(FieldSerializer.java:175)
at
com.esotericsoftware.kryo.serialize.ReferenceFieldSerializer.writeObjectData(ReferenceFieldSerializer.java:52)
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:489)
at
org.wicketstuff.pageserializer.kryo.DebuggingKryo.writeClassAndObject(DebuggingKryo.java:57)
at
org.wicketstuff.pageserializer.kryo.KryoSerializer.serialize(KryoSerializer.java:87)
at
org.wicketstuff.pageserializer.kryo.KryoSerializerTest.homepageRendersSuccessfully(KryoSerializerTest.java:43)
I suspect that some changes in Wicket core might be responsible for the
failure. The Kryo projects were not modified in the last days and if I
use Wicket version 7.0.0-M3 everything works as expected. Since I
neither know Kyro nor the internals of Wicket I'm not sure where this
has to be fixed. I just wanted to point this out in case there might be
a subtle issue introduced lately into Wicket.
Joachim
Re: Failure of Kyro serializer due to latest changes in Wicket snapshot?
Posted by Martin Grigorov <mg...@apache.org>.
Hi,
Thanks for notifying us!
The old bufferSize was 500 bytes.
Since recently auto components are not removed at the end of the request
cycle and they contribute to the page size at the end:
ERROR - DebuggingKryo - Wrote '340' bytes for object: 'class
org.wicketstuff.pageserializer.kryo.HomePage$1'
ERROR - DebuggingKryo - Wrote '540' bytes for object: 'class
org.apache.wicket.markup.html.internal.HtmlHeaderContainer' // auto
ERROR - DebuggingKryo - Wrote '591' bytes for object: 'class
org.apache.wicket.markup.html.TransparentWebMarkupContainer' // auto
ERROR - DebuggingKryo - Wrote '673' bytes for object: 'class
org.wicketstuff.pageserializer.kryo.HomePage'
I want to revise the recent change because I am not sure it is correct.
For the time being I've increased the buffer size to 1000 bytes (
https://github.com/wicketstuff/core/commit/f1a0042d3f2cb5c2e3c1b8bc3c120b95b79389ca
)
Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov
On Fri, Oct 17, 2014 at 1:44 AM, Joachim Rohde <mailinglist@joachimrohde.com
> wrote:
> Hi,
> I realized today that the unit tests of the Kryo serializers (and the fast
> serializer) in the Wickestuff project were failing since (at least)
> yesterday (16th october). The last successful build according to
> https://travis-ci.org/wicketstuff/core/builds was on the 13th.
> For example https://github.com/wicketstuff/core/blob/master/
> jdk-1.7-parent/serializer-kryo/src/test/java/org/
> wicketstuff/pageserializer/kryo/KryoSerializerTest.java fails with
>
> Running org.wicketstuff.pageserializer.kryo.KryoSerializerTest
> DEBUG - KryoSerializer - Buffer size: '500 bytes'
> DEBUG - KryoSerializer - Going to serialize: '[Page class =
> org.wicketstuff.pageserializer.kryo.HomePage, id = 0, render count = 1]'
> ERROR - DebuggingKryo - Wrote '146' bytes for object: 'class
> org.apache.wicket.markup.html.basic.Label'
> ERROR - DebuggingKryo - Wrote '269' bytes for object: 'class
> org.apache.wicket.ajax.markup.html.AjaxLink$1'
> ERROR - DebuggingKryo - Wrote '320' bytes for object: 'class
> org.apache.wicket.ajax.markup.html.AjaxLink$1'
> ERROR - DebuggingKryo - Wrote '320' bytes for object: 'class
> org.apache.wicket.Behaviors$BehaviorIdList'
> ERROR - DebuggingKryo - Wrote '340' bytes for object: 'class
> org.wicketstuff.pageserializer.kryo.HomePage$1'
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.724 sec
> <<< FAILURE! - in org.wicketstuff.pageserializer.kryo.KryoSerializerTest
> homepageRendersSuccessfully(org.wicketstuff.pageserializer.kryo.KryoSerializerTest)
> Time elapsed: 0.678 sec <<< ERROR!
> com.esotericsoftware.kryo.SerializationException: Buffer limit exceeded
> writing object of type: org.wicketstuff.pageserializer.kryo.HomePage
> at java.nio.Buffer.nextPutIndex(Buffer.java:521)
> at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:169)
> at com.esotericsoftware.kryo.serialize.StringSerializer.
> put(StringSerializer.java:35)
> at com.esotericsoftware.kryo.serialize.StringSerializer.
> writeObjectData(StringSerializer.java:24)
> at com.esotericsoftware.kryo.Serializer.writeObject(
> Serializer.java:43)
> at com.esotericsoftware.kryo.serialize.FieldSerializer.
> writeObjectData(FieldSerializer.java:182)
> at com.esotericsoftware.kryo.serialize.ReferenceFieldSerializer.
> writeObjectData(ReferenceFieldSerializer.java:52)
> at com.esotericsoftware.kryo.serialize.FieldSerializer.
> writeObjectData(FieldSerializer.java:175)
> at com.esotericsoftware.kryo.serialize.ReferenceFieldSerializer.
> writeObjectData(ReferenceFieldSerializer.java:52)
> at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.
> java:489)
> at org.wicketstuff.pageserializer.kryo.DebuggingKryo.
> writeClassAndObject(DebuggingKryo.java:57)
> at com.esotericsoftware.kryo.serialize.ArraySerializer.
> writeArray(ArraySerializer.java:123)
> at com.esotericsoftware.kryo.serialize.ArraySerializer.
> writeObjectData(ArraySerializer.java:88)
> at com.esotericsoftware.kryo.serialize.FieldSerializer.
> writeObjectData(FieldSerializer.java:175)
> at com.esotericsoftware.kryo.serialize.FieldSerializer.
> writeObjectData(FieldSerializer.java:175)
> at com.esotericsoftware.kryo.serialize.ReferenceFieldSerializer.
> writeObjectData(ReferenceFieldSerializer.java:52)
> at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.
> java:489)
> at org.wicketstuff.pageserializer.kryo.DebuggingKryo.
> writeClassAndObject(DebuggingKryo.java:57)
> at org.wicketstuff.pageserializer.kryo.KryoSerializer.serialize(
> KryoSerializer.java:87)
> at org.wicketstuff.pageserializer.kryo.KryoSerializerTest.
> homepageRendersSuccessfully(KryoSerializerTest.java:43)
>
> I suspect that some changes in Wicket core might be responsible for the
> failure. The Kryo projects were not modified in the last days and if I use
> Wicket version 7.0.0-M3 everything works as expected. Since I neither know
> Kyro nor the internals of Wicket I'm not sure where this has to be fixed. I
> just wanted to point this out in case there might be a subtle issue
> introduced lately into Wicket.
>
> Joachim
>