On 10 Jun 2011, at 15:14, Galder ZamarreƱo wrote:
>
> Hi Galder, I'm not sure to what you're referring to. I was not
> proposing to change anything on the reader side, just - if possible as
> I don't know this code - to try not sending anything if we fail to
> build a proper stream (instead of sending a broken stream). That is of
> course feasible only if you've not started transmitting already.
That doesn't work for state based streams, such as state transfer or rehashing. You
can't just wait to build the entire stream and then send it.
The error we're seeing here is precisely in one those use cases.
In pretty much the rest of marshalling cases, we build the stream and then we send it.
Precisely; there are 2 types of streams, one which generates a byte buffer (RPCs and Hot
Rod, etc) for which the server side does not send incomplete/erroneous streams.
The other is for state transfer which opens a stream on a network socket and starts
pushing bytes out. In this case the sender could die and generate a problem on the
receiver.
Galder, your approach (catching this and printing an appropriate, cleaned-up message) is
the best one. Have you got a JIRA for this? I'm guessing this would be pretty easy
to impl.
Cheers
Manik
--
Manik Surtani
manik(a)jboss.org
twitter.com/maniksurtani
Lead, Infinispan
http://www.infinispan.org