[jbosscache-dev] Critical CacheMarshaller issue
Brian Stansberry
brian.stansberry at redhat.com
Wed Nov 7 21:37:44 EST 2007
IIRC, this use of references was not an optimization, it was a
requirement to ensure we retain object identity when we deserialize. So
I don't think we can drop it for some types.
Manik Surtani wrote:
> A nasty bug, spotted by someone in the user forum (initially as a CCE)
>
> http://jira.jboss.org/jira/browse/JBCACHE-1211
>
> Copying from the JIRA:
>
> "This is a nasty. What started life as an optimisation for certain types
> of objects in a marshalled stream (Fqn, GlobalTransactio, String and
> Serializable) has become a major limitation in that a single stream can
> only hold up to 32767 different (not equal()) instances of such objects.
>
> Basically the optimisation was, for example, instead of writing "hello"
> to a stream twice, just write it once and use a reference for all
> subsequent times. Unfortunately this reference was encoded as a short,
> hence the limitation of 32767.
>
> Fixing this will definitely break wire compatibility with JBoss Cache
> 2.0.0, although JBC does allow backward compatibility by specifying
> replication version in your configuration, thanks to the
> VersionAwareMarshaller. "
>
> So I guess this mandates the need for a CacheMarshaller210. The
> question is how do we fix this. The obvious thing is to replace the
> short references with integers. The 2 ^ 31 - 1 number of references
> this would allow should be plenty! The drawback though, is larger
> streams. 4-byte refs instead of 2-byte refs can be an unnecessary
> overhead especially if objects aren't repeated much.
>
> One thing we could do is just limit ref counting to Fqn and
> GlobalTransaction types, of which we know can often be repeated in a
> modification list, and where the optimisation can benefit, and assume it
> isn't worth optimising in the same way for user data (Strings and
> Serializables).
>
> Or maybe we should drop the ref counting altogether, save a few more
> bytes' worth of payload.
>
> Thoughts?
> --
> Manik Surtani
> Lead, JBoss Cache
> manik at jboss.org
>
>
>
>
>
>
> _______________________________________________
> jbosscache-dev mailing list
> jbosscache-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jbosscache-dev
--
Brian Stansberry
Lead, AS Clustering
JBoss, a division of Red Hat
brian.stansberry at redhat.com
More information about the jbosscache-dev
mailing list