hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hudson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-14674) Rpc handler / task monitoring seems to be broken after 0.98
Date Wed, 28 Oct 2015 03:59:28 GMT

    [ https://issues.apache.org/jira/browse/HBASE-14674?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14977677#comment-14977677
] 

Hudson commented on HBASE-14674:
--------------------------------

SUCCESS: Integrated in HBase-1.3-IT #277 (See [https://builds.apache.org/job/HBase-1.3-IT/277/])
HBASE-14674 Rpc handler / task monitoring seems to be broken after 0.98 (enis: rev 68f0fff281a7da6935fd328b9a692b77c6f559c3)
* hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.java
* hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcExecutor.java
* hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java
* hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestCallRunner.java
* hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/FifoRpcScheduler.java
* hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java


> Rpc handler / task monitoring seems to be broken after 0.98
> -----------------------------------------------------------
>
>                 Key: HBASE-14674
>                 URL: https://issues.apache.org/jira/browse/HBASE-14674
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Enis Soztutar
>            Assignee: Heng Chen
>             Fix For: 1.3.0, 1.2.1, 1.0.3, 1.1.4, 0.98.17
>
>         Attachments: HBASE-14674.patch, HBASE-14674_v1.patch, HBASE-14674_v2.patch
>
>
> In 0.96, we have the RPC handlers listed as tasks and show them in the web UI as well:

> {code}
> Tasks:
> ===========================================================
> Task: RpcServer.handler=0,port=64231
> Status: WAITING:Waiting for a call
> Running for 932s
> Task: RpcServer.handler=1,port=64231
> Status: WAITING:Waiting for a call
> Running for 932s
> Task: RpcServer.handler=2,port=64231
> Status: WAITING:Waiting for a call
> Running for 932s
> {code}
> After pluggable RPC scheduler, the way the tasks work for the handlers got changed. We
no longer list idle RPC handlers in the tasks, but we register them dynamically to {{TaskMonitor}}
through {{CallRunner}}. However, the IPC readers are still registered the old way (meaning
that idle readers are listed as tasks, but not idle handlers). 
> From the javadoc of {{MonitoredRPCHandlerImpl}}, it seems that we are NOT optimizing
the allocation for the MonitoredTask anymore, but instead allocate one for every RPC call
breaking the pattern (See CallRunner.getStatus()). 
> {code}
> /**
>  * A MonitoredTask implementation designed for use with RPC Handlers 
>  * handling frequent, short duration tasks. String concatenations and object 
>  * allocations are avoided in methods that will be hit by every RPC call.
>  */
> @InterfaceAudience.Private
> public class MonitoredRPCHandlerImpl extends MonitoredTaskImpl
> {code}
> There is also one more side affect that, since the CallRunner is a per-RPC object and
created in the RPC listener thread, the created task ends up having a name "listener" although
the actual processing happens in a handler thread. This is obviously very confusing during
debugging. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message