NettyBlockRpcServer — NettyBlockTransferService’s RpcHandler
NettyBlockRpcServer is a RpcHandler that handles messages for NettyBlockTransferService.
NettyBlockRpcServer uses a OneForOneStreamManager for…FIXME
| Message | Behaviour |
|---|---|
|
Obtaining local blocks and registering them with the internal OneForOneStreamManager |
|
|
Deserializes a block and stores it in BlockDataManager |
|
Tip
|
Enable TRACE logging level to see received messages in the logs.
|
|
Tip
|
Enable Add the following line to
Refer to Logging. |
Obtaining Local Blocks and Registering with Internal OneForOneStreamManager — OpenBlocks Message Handler
When OpenBlocks arrives, NettyBlockRpcServer requests block data (from BlockDataManager) for every block id in the message. The block data is a collection of ManagedBuffer for every block id in the incoming message.
|
Note
|
BlockDataManager is given when NettyBlockRpcServer is created.
|
NettyBlockRpcServer then registers a stream of ManagedBuffers (for the blocks) with the internal StreamManager under streamId.
|
Note
|
The internal StreamManager is OneForOneStreamManager and is created when NettyBlockRpcServer is created.
|
You should see the following TRACE message in the logs:
|
1 2 3 4 5 |
TRACE NettyBlockRpcServer: Registered streamId [streamId] with [size] buffers |
In the end, NettyBlockRpcServer responds with a StreamHandle (with the streamId and the number of blocks). The response is serialized as a ByteBuffer.
Deserializing Block and Storing in BlockDataManager — UploadBlock Message Handler
When UploadBlock arrives, NettyBlockRpcServer deserializes the metadata of the input message to get the StorageLevel and ClassTag of the block being uploaded.
|
Note
|
metadata is serialized before NettyBlockTransferService sends a UploadBlock message (using the internal JavaSerializer) that is given as serializer when NettyBlockRpcServer is created.
|
NettyBlockRpcServer creates a BlockId for the block id and requests the BlockDataManager to store the block.
|
Note
|
The BlockDataManager is passed in when NettyBlockRpcServer is created.
|
In the end, NettyBlockRpcServer responds with a 0-capacity ByteBuffer.
|
Note
|
UploadBlock is sent when NettyBlockTransferService uploads a block.
|
Creating NettyBlockRpcServer Instance
NettyBlockRpcServer takes the following when created:
NettyBlockRpcServer initializes the internal registries and counters.
Receiving RPC Messages — receive Method
|
1 2 3 4 5 6 7 8 |
receive( client: TransportClient, rpcMessage: ByteBuffer, responseContext: RpcResponseCallback): Unit |
|
Note
|
receive is part of RpcHandler Contract to…FIXME.
|
receive…FIXME
spark技术分享