You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "dhruba borthakur (JIRA)" <ji...@apache.org> on 2011/05/19 09:04:47 UTC
[jira] [Updated] (HBASE-3899) enhance HBase RPC to support free-ing
up server handler threads even if response is not ready
[ https://issues.apache.org/jira/browse/HBASE-3899?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
dhruba borthakur updated HBASE-3899:
------------------------------------
Attachment: asyncRpc.txt
This patch allows the RPC handler thread to
be freed up to process new incoming RPC's while the wal sync is pending.
The handler thread sends out response only if it has not been responded to earlier. The call.doneResponse field ensures that responses are sent out only once.
If the application server returns WriteDelayed, then the rpc server does not send out responses to client.
> enhance HBase RPC to support free-ing up server handler threads even if response is not ready
> ---------------------------------------------------------------------------------------------
>
> Key: HBASE-3899
> URL: https://issues.apache.org/jira/browse/HBASE-3899
> Project: HBase
> Issue Type: Improvement
> Components: ipc
> Reporter: dhruba borthakur
> Assignee: dhruba borthakur
> Attachments: asyncRpc.txt
>
>
> In the current implementation, the server handler thread picks up an item from the incoming callqueue, processes it and then wraps the response as a Writable and sends it back to the IPC server module. This wastes thread-resources when the thread is blocked for disk IO (transaction logging, read into block cache, etc).
> It would be nice if we can make the RPC Server Handler threads pick up a call from the IPC queue, hand it over to the application (e.g. HRegion), the application can queue it to be processed asynchronously and send a response back to the IPC server module saying that the response is not ready. The RPC Server Handler thread is now ready to pick up another request from the incoming callqueue. When the queued call is processed by the application, it indicates to the IPC module that the response is now ready to be sent back to the client.
> The RPC client continues to experience the same behaviour as before. A RPC client is synchronous and blocks till the response arrives.
> This RPC enhancement allows us to do very powerful things with the RegionServer. In future, we can make enhance the RegionServer's threading model to a message-passing model for better performance. We will not be limited by the number of threads in the RegionServer.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira