On 4 Jul 2008, at 12:32, Bela Ban wrote:
Manik Surtani wrote:
> But that would involve JGroups code calling Buffer.copy() again,
> which is the same as using a normal BAOS. Just that it happens a
> bit later in the chain of events.
No: the byte[] buffer with offset and length are passed down to the
TCP or datagram socket and *NOT* copied at all !
Ok, makes more sense. Misleading copy() method on the class had me
thinking it was actually used somewhere. :-)
> This should have far-reaching consequences as I'm not aware
of
> anyone else but JBossCache to use Marshaller. Or maybe, to be on
> the safe side, I could create a Marshaller2 so existing code
> doesn't break (extending Marshaller)...
http://jira.jboss.com/jira/browse/JGRP-796That
> should
>
> I wasn't talking about reusing stream instances, I was referring to
> the same problem you have above with JGroups is going to be
> encountered with every cache loader impl in that the byte[]
> retrieved may be larger than necessary and contain uninitialized
> values.
So JBC has to switch to a Buffer-like implementation too. At least
where it is important. I suggest do it immediately wherever code can
be changed (e.g. internal code) and defer it to later in cases where
external code might rely on it, in order not to break anything.
Ok, so once we have a Marshaller interface that uses this Buffer I can
switch to it.
We need to reduce copying wherever possible !
+100
--
Manik Surtani
Lead, JBoss Cache
manik(a)jboss.org