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 <mailingl...@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
>

Reply via email to