[
https://issues.apache.org/jira/browse/HBASE-3899?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13069227#comment-13069227
]
[email protected] commented on HBASE-3899:
------------------------------------------------------
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/1174/#review1159
-----------------------------------------------------------
src/main/java/org/apache/hadoop/hbase/ipc/HBaseServer.java
<https://reviews.apache.org/r/1174/#comment2399>
are these two booleans totally orthogonal? or should we really have a
tri-state enum? [not sure yet]
src/test/java/org/apache/hadoop/hbase/ipc/TestDelayedRpc.java
<https://reviews.apache.org/r/1174/#comment2400>
this test seems pretty timing-dependent. I wouldn't trust that the sleeps
are enough to force the order you expect
src/test/java/org/apache/hadoop/hbase/ipc/TestDelayedRpc.java
<https://reviews.apache.org/r/1174/#comment2401>
I don't follow. Isn't the idea here that the rpc handler would return an
unused value immediately (eg return -1) and then another thread would _later_
set the return value?
i.e I'd have expected the function implementatoin to be something like:
public int test(boolean delay) {
if (!delay) { return UNDELAYED; }
final Delayable call = rpcServer.getCurrentCall();
call.startDelay();
new Thread() {
public void run() {
call.endDelay(DELAYED);
}
}
return 0xDEADBEEF; // this return value should not go back to client
}
what am I missing?
- Todd
On 2011-07-21 20:35:22, Vlad Dogaru wrote:
bq.
bq. -----------------------------------------------------------
bq. This is an automatically generated e-mail. To reply, visit:
bq. https://reviews.apache.org/r/1174/
bq. -----------------------------------------------------------
bq.
bq. (Updated 2011-07-21 20:35:22)
bq.
bq.
bq. Review request for hbase.
bq.
bq.
bq. Summary
bq. -------
bq.
bq. Free up RPC server Handler thread if the called routine specifies the call
should be delayed. The RPC client sees no difference, changes are server-side
only. This is based on the previous submitted patch from Dhruba.
bq.
bq.
bq. This addresses bug HBASE-3899.
bq. https://issues.apache.org/jira/browse/HBASE-3899
bq.
bq.
bq. Diffs
bq. -----
bq.
bq. src/main/java/org/apache/hadoop/hbase/ipc/Delayable.java PRE-CREATION
bq. src/main/java/org/apache/hadoop/hbase/ipc/HBaseServer.java 61d3915
bq. src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java 0da7f9e
bq. src/test/java/org/apache/hadoop/hbase/ipc/TestDelayedRpc.java
PRE-CREATION
bq.
bq. Diff: https://reviews.apache.org/r/1174/diff
bq.
bq.
bq. Testing
bq. -------
bq.
bq. Unit tests run. Also, the patch includes a new unit test.
bq.
bq.
bq. Thanks,
bq.
bq. Vlad
bq.
bq.
> 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
> Fix For: 0.94.0
>
> Attachments: asyncRpc.txt, 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