Non-blocking streaming with netty
This document describes the implementation details of the streaming protocol. A listener for a streaming
session listens on the same socket as internode messaging, and participates in the same handshake protocol
That protocol is described in the package-level documentation for
org.apache.cassandra.net.async
, and
thus not here.
Streaming 2.0 was implemented as CASSANDRA-5286. Streaming 2.0 used (the equivalent of) a single thread and
a single socket to transfer sstables sequentially to a peer (either as part of a repair, bootstrap, and so on).
Part of the motivation for switching to netty and a non-blocking model as to enable stream transfers to occur
in parallel for a given session.
Thus, a more detailed approach is required for stream session management.
Session setup and management
The full details of the session lifecycle are documented in
StreamSession
.