hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Enis Soztutar (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HBASE-14674) Rpc handler / task monitoring seems to be broken after 0.98
Date Thu, 22 Oct 2015 02:34:27 GMT
Enis Soztutar created HBASE-14674:
-------------------------------------

             Summary: 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
             Fix For: 1.3.0, 1.2.1, 1.0.3, 1.1.4, 0.98.17


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 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