[
https://issues.apache.org/jira/browse/HADOOP-15830?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16642679#comment-16642679
]
BELUGA BEHR commented on HADOOP-15830:
--------------------------------------
[~elgoiri] Thanks for the look!
Ya, I think the assumption is that if an items in the queue are timestamped as
they are placed into the queue, so in essence, it is sorted. However, I'm not
always sure that is the case.
{code}
// Item goes on the front of the list
call.connection.responseQueue.addFirst(call);
if (inHandler) {
// timestamp is reset
call.timestamp = Time.now();
...
{code}
So in this case, it is actually possible that the item at the front of the list
has the newest timestamp in the queue. I'm not sure in practice if this
happens or if the purge can happen when this is the case, but it would cause
the purge loop to bump out immediately and leave expired calls in the queue.
Regardless, without a priority queue implementation, it seems best to not
assume order.
> Server.java Prefer ArrayList
> ----------------------------
>
> Key: HADOOP-15830
> URL: https://issues.apache.org/jira/browse/HADOOP-15830
> Project: Hadoop Common
> Issue Type: Improvement
> Components: ipc
> Affects Versions: 3.2.0
> Reporter: BELUGA BEHR
> Assignee: BELUGA BEHR
> Priority: Minor
> Attachments: HDFS-13969.1.patch
>
>
> * Prefer ArrayDeque over LinkedList (faster, less memory overhead)
> * Address this code:
> {code}
> //
> // Remove calls that have been pending in the responseQueue
> // for a long time.
> //
> private void doPurge(RpcCall call, long now) {
> LinkedList<RpcCall> responseQueue = call.connection.responseQueue;
> synchronized (responseQueue) {
> Iterator<RpcCall> iter = responseQueue.listIterator(0);
> while (iter.hasNext()) {
> call = iter.next();
> if (now > call.timestamp + PURGE_INTERVAL) {
> closeConnection(call.connection);
> break;
> }
> }
> }
> }
> {code}
> It says "Remove calls" (plural) but only one call will be removed because of
> the 'break' statement.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]