I would guess that sending a bunch of range requests simultaneously overwhelms the targets (range scans are expensive), so you're timing out simply because it couldn't finish all of them within rpc_timeout.
Solution: don't do that, or increase rpc_timeout. On Wed, Jan 12, 2011 at 3:03 AM, <alta...@ceid.upatras.gr> wrote: > Hello, > > I am reading through getRangeSlice() in StorageProxy, and I am trying to > do roughly the same thing for a join operation I am trying to implement in > Cassandra. > > I see that getRangeSlice() loops through all available ranges, and for > each range, it sends a request to the applicable nodes and then handles > their answer *before* advancing to the next range. That may be fine for > getRangeSlice(), but I'd like to send requests for all ranges at once and > collect and handle the responses asynchronoysly (when they arrive). > > I tried the following (pseudocode mixed with code): > > <create a list of handlers> > > for (AbstractBounds range : ranges) > { > <create handler for this range> > > for (InetAddress endpoint : entry.getValue()) > { > MessagingService.instance.sendRR(message, endpoint, handler); > } > > handlers.add(handler); > } > > for(QRH handler : handlers) > { > List<ByteBuffer> response = handler.get(); > } > > However my client gets a TimedOutException and I think Cassandra blocks > during the resolve() in get(). > > I am using 0.7.0rc1, however I don't think this code would have changed much. > > Any ideas? > > Alexander > -- Jonathan Ellis Project Chair, Apache Cassandra co-founder of Riptano, the source for professional Cassandra support http://riptano.com