ClusterChannel
The cluster channel: the one internal channel between the nodes of a service, listening on their internal port only and trusted without authentication. This port is what the runtime needs of it; a transport (HTTP/2 with JSON, in the host) implements it, reaching a node by its internal address.
forward sends a command to its partition's owner and returns the owner's reply. It throws a ClusterChannelException when the peer cannot be reached, unsent when the request surely did not reach it; it does not time out by itself: the caller bounds it, and a cancelled call leaves the peer's execution running, as a dropped connection would.
connect makes the channel ready to forward to a peer: a transport whose first message to a peer pays for setting up a connection opens it there, so that cost is not counted against a forward's own timeout. A node connects to each peer as soon as its routes learn the peer's address, and PartitionedRouter once more before each forward, which costs nothing once connected.
reserve takes the stream a forward is sent on before it is sent, so a forward that waits for its turn to a busy peer is known not to have been sent; PartitionedRouter reserves one before each forward.
Properties
How long past a forward's deadline its stream still carries the owner's reply: the owner answers about the deadline (it withdraws a command still queued at its wait's deadline), and PartitionedRouter waits that much longer for the reply before it reports the outcome unknown. The default carries none past the deadline.
Functions
Opens what a forward to address needs, and returns once it is open; at once when it already is. It throws a ClusterChannelException when the peer cannot be reached, and bounds itself; a cancelled call leaves the connection opening for the next one. The default needs nothing.
Takes one of the streams to address a forward is sent on, and returns it once taken. A transport that carries a bounded number of requests to a peer at a time waits here, in order, while they are all taken, with no bound of its own: the caller bounds the wait, and a cancelled call takes nothing. It does not fail: a peer that cannot be reached fails the ClusterStream.forward. The default takes nothing, and its stream forwards through forward.