I created issue 96 and submitted a patch in http://codereview.waveprotocol.org/75001
-Tad On Tue, Jun 15, 2010 at 3:38 AM, Bernardo Ferreira < [email protected]> wrote: > On Mon, Jun 14, 2010 at 7:34 PM, Tad Glines <[email protected]> wrote: > > As the wavelet gets more content it's initial snapshot will get bigger. > At > > some point, the snapshot size will exceed the allocated buffer size in > > SequencedProtoChannel. > > To test the theory, you can increase the amount of text being pushed into > > the blips, or you can add a larger delay between the launching of each > > thread. > > The result should be that even with the change from "8192*4" to "8192*10" > > you'll get the exception. > > > > The same problem will occur if the number of deltas included int an > update > > message get to large for the buffer. > > > > In my own project I modified SequencedProtoChannel so that it wraps the > > Channel in a CodedInputStream and lets the proto stuff parse the message > > directly from the channel instead of staging it in a buffer first. > > > > If others are interested I can try and extract that change and submit it > as > > a patch. > > > > That would be interesting to see. If you could add this patch it would > be much appreciated (at least by me :D). Btw, your theory confirms. If > i add 1k blips to a wavelet, altough the server receives all the ops > and doesn't complain I can't open the blip anymore. Actually I can't > do anything with that client anymore until I reboot the server and > clean the waves. > > > -Tad > > > > On Mon, Jun 14, 2010 at 10:21 AM, Bernardo Ferreira > > <[email protected]> wrote: > >> > >> Hi, > >> > >> I was "playing around" with fedone and decided to make some load > >> testing with multiple clients. I created a test where i would spawn > >> multiple threads in sequence, waiting only 10 seconds before launching > >> the next. Each thread would connect to my local fedone server by > >> opening a new ClientBackend. Before the test spawned the threads it > >> would connect as the first client, create a new wave and add > >> participants for the other threads. Each thread, when spawned, would > >> open the wave from it's own ClientBackend and would start appending > >> blips one after the other. This way i was simulating multiples clients > >> communicating in a single wave (altough at a very high speed :P). > >> > >> Very interesting indeed. But now the funny part. When I ran the test I > >> noticed that it would throw an exception by the time it would spawn > >> the fourth thread. When I checked the exception, I realized it had > >> been thrown by this line in the class SequencedProtoChannel: > >> > >> // Try to grab the whole payload. > >> if (requiredSize > bufferSize) { > >> throw new IllegalStateException(String.format("Payload > >> (%d bytes) too large for" + > >> " buffer (%d bytes)", requiredSize, > >> bufferSize)); > >> } > >> > >> Why wasn't this being thrown when I had 1, 2 or 3 clients but it was > >> when i tried to start the 4th? Indeed, very strange. I later tried > >> with 4 separate computers, instead of using threads, and the problem > >> persisted. > >> Finally, i tried twiking with the buffer size. I changed: > >> > >> final int bufferSize = 8192 * 4; > >> > >> to: > >> > >> final int bufferSize = 8192 * 10; > >> > >> This allowed me to connect the 4th client, but i don't know what the > >> consequences of this action are. Any brave soul has an insight into > >> the problem? > >> > >> Cheers, > >> Bernardo > >> > >> -- > >> You received this message because you are subscribed to the Google > Groups > >> "Wave Protocol" group. > >> To post to this group, send email to [email protected]. > >> To unsubscribe from this group, send email to > >> [email protected]<wave-protocol%[email protected]> > . > >> For more options, visit this group at > >> http://groups.google.com/group/wave-protocol?hl=en. > >> > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Wave Protocol" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]<wave-protocol%[email protected]> > . > > For more options, visit this group at > > http://groups.google.com/group/wave-protocol?hl=en. > > > > -- > You received this message because you are subscribed to the Google Groups > "Wave Protocol" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<wave-protocol%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/wave-protocol?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Wave Protocol" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/wave-protocol?hl=en.
