[Spread-users] "connection clsoed" problem
bcm at maz.org
Tue Sep 21 22:25:25 EDT 2004
Ryan Caudy wrote:
> Spread certainly does support multiple connections from a single
> process. A quick check for your problem suggests a possible root
> cause in the Java Library's implementation. Basically,
> InputStream.read(byte b) isn't guaranteed to read the full length of
> b, and so a more correct version of the library would loop on reading
> (as it does in several other situations). I see one more instance of
> this problem in the code. I'll create a patch that fixes both, when I
> have some time to do so.
that makes sense. thanks for the look.
> Is the second message that you multicast sent by the same
> thread/connection? That exception should *only* be thrown during an
> attempt to connect, so I feel like there must be some detail of the
> scenario I'm missing. Can you explain further?
you're right. i did a little more digging and found that multiple
different threads are attempting to open connections. not at all the
problem that i originally described.
1) thread A opens a connection and multicasts a message.
2) thread B attempts to open a connection and fails.
what's interesting is that this seems to happen only if thread A doesn't
close its connection, or (as reported by my QA lab) if multiple threads
attempt to open connections at the same time.
under light load, if i cause each thread to close its connection after
multicasting, then the problem never occurs. with enough load to cause 4
threads to execute more or less simultaneously, then only the first
thread's connection succeeds.
my workaround is to maintain a single open connection shared by all
threads, but i'm concerned that this will degrade my webapp's
performance - i need to send ~1000 msgs per second - forcing me to scale
horizontally more quickly than i'd expected.
More information about the Spread-users