@InterfaceAudience.Private public class FifoRpcScheduler extends RpcScheduler
RpcScheduler.Context
Modifier and Type | Field and Description |
---|---|
protected ThreadPoolExecutor |
executor |
protected int |
handlerCount |
protected int |
maxQueueLength |
protected AtomicInteger |
queueSize |
IPC_SERVER_MAX_CALLQUEUE_LENGTH, IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH
Constructor and Description |
---|
FifoRpcScheduler(org.apache.hadoop.conf.Configuration conf,
int handlerCount) |
Modifier and Type | Method and Description |
---|---|
boolean |
dispatch(CallRunner task)
Dispatches an RPC request asynchronously.
|
protected boolean |
executeRpcCall(ThreadPoolExecutor executor,
AtomicInteger queueSize,
CallRunner task) |
int |
getActiveReadRpcHandlerCount()
Retrieves the number of active write rpc handler when use RWQueueRpcExecutor.
|
int |
getActiveRpcHandlerCount()
Retrieves the number of active handler.
|
int |
getActiveScanRpcHandlerCount()
Retrieves the number of active write rpc handler when use RWQueueRpcExecutor.
|
int |
getActiveWriteRpcHandlerCount()
Retrieves the number of active write rpc handler when use RWQueueRpcExecutor.
|
protected String |
getCallMethod(CallRunner task) |
CallQueueInfo |
getCallQueueInfo()
Get call queue information
|
int |
getGeneralQueueLength()
Retrieves length of the general queue for metrics.
|
int |
getMetaPriorityQueueLength()
Retrieves length of the meta priority queue for metrics.
|
long |
getNumGeneralCallsDropped()
If CoDel-based RPC executors are used, retrieves the number of Calls that were dropped
from general queue because RPC executor is under high load; returns 0 otherwise.
|
long |
getNumLifoModeSwitches()
If CoDel-based RPC executors are used, retrieves the number of Calls that were
picked from the tail of the queue (indicating adaptive LIFO mode, when
in the period of overloade we serve last requests first); returns 0 otherwise.
|
int |
getPriorityQueueLength()
Retrieves length of the priority queue for metrics.
|
int |
getReadQueueLength()
Retrieves length of the read queue for metrics when use RWQueueRpcExecutor.
|
int |
getReplicationQueueLength()
Retrieves length of the replication queue for metrics.
|
int |
getScanQueueLength()
Retrieves length of the scan queue for metrics when use RWQueueRpcExecutor.
|
int |
getWriteQueueLength()
Retrieves length of the write queue for metrics when use RWQueueRpcExecutor.
|
void |
init(RpcScheduler.Context context)
Does some quick initialization.
|
void |
start()
Prepares for request serving.
|
void |
stop()
Stops serving new requests.
|
protected void |
updateMethodCountAndSizeByQueue(BlockingQueue<Runnable> queue,
HashMap<String,Long> methodCount,
HashMap<String,Long> methodSize) |
protected final int handlerCount
protected final int maxQueueLength
protected final AtomicInteger queueSize
protected ThreadPoolExecutor executor
public FifoRpcScheduler(org.apache.hadoop.conf.Configuration conf, int handlerCount)
public void init(RpcScheduler.Context context)
RpcScheduler
RpcScheduler.start()
. This method is called before start
.init
in class RpcScheduler
context
- provides methods to retrieve runtime information frompublic void start()
RpcScheduler
start
in class RpcScheduler
public void stop()
RpcScheduler
stop
in class RpcScheduler
public boolean dispatch(CallRunner task) throws IOException, InterruptedException
RpcScheduler
dispatch
in class RpcScheduler
task
- the request to be dispatchedIOException
InterruptedException
protected boolean executeRpcCall(ThreadPoolExecutor executor, AtomicInteger queueSize, CallRunner task)
public int getGeneralQueueLength()
RpcScheduler
getGeneralQueueLength
in class RpcScheduler
public int getPriorityQueueLength()
RpcScheduler
getPriorityQueueLength
in class RpcScheduler
public int getReplicationQueueLength()
RpcScheduler
getReplicationQueueLength
in class RpcScheduler
public int getActiveRpcHandlerCount()
RpcScheduler
getActiveRpcHandlerCount
in class RpcScheduler
public long getNumGeneralCallsDropped()
RpcScheduler
getNumGeneralCallsDropped
in class RpcScheduler
public long getNumLifoModeSwitches()
RpcScheduler
getNumLifoModeSwitches
in class RpcScheduler
public int getWriteQueueLength()
RpcScheduler
getWriteQueueLength
in class RpcScheduler
public int getReadQueueLength()
RpcScheduler
getReadQueueLength
in class RpcScheduler
public int getScanQueueLength()
RpcScheduler
getScanQueueLength
in class RpcScheduler
public int getActiveWriteRpcHandlerCount()
RpcScheduler
getActiveWriteRpcHandlerCount
in class RpcScheduler
public int getActiveReadRpcHandlerCount()
RpcScheduler
getActiveReadRpcHandlerCount
in class RpcScheduler
public int getActiveScanRpcHandlerCount()
RpcScheduler
getActiveScanRpcHandlerCount
in class RpcScheduler
public int getMetaPriorityQueueLength()
RpcScheduler
getMetaPriorityQueueLength
in class RpcScheduler
public CallQueueInfo getCallQueueInfo()
RpcScheduler
getCallQueueInfo
in class RpcScheduler
protected void updateMethodCountAndSizeByQueue(BlockingQueue<Runnable> queue, HashMap<String,Long> methodCount, HashMap<String,Long> methodSize)
protected String getCallMethod(CallRunner task)
Copyright © 2007–2019 Cloudera. All rights reserved.