hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gera Shegalov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HADOOP-11295) RPC Server Reader thread can't shutdown if RPCCallQueue is full
Date Sat, 20 Dec 2014 01:20:13 GMT

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

Gera Shegalov commented on HADOOP-11295:
----------------------------------------

Thanks for updating the patch, [~mingma]!

A couple more comments, we are close. To reproduce the problem in your setup, we need 3 concurrent
clients. Thus we don't need to have wait loops after each individual {{clientX.start()}}.
So just after last {{client3.start}} we can wait until all threads are active using the {{TestRPC#countThreads}}
methods:
{code}
      while (countThreads("TestRPC$SleepRPCClient") != 3) {
        Thread.sleep(100);
      }
{code}
After that we need to have another single sleep to be sure that the server-side problem is
reproduced instead of {{while (!client3.isAlive())}} loop.

{{if (proxy != null)}} is unnecessary because proxy is known to be non-null in the finally.


In {{SleepRPCClient#run}}, we should catch Throwable and LOG it instead of completely ignoring
the exception for better debugability.


> RPC Server Reader thread can't shutdown if RPCCallQueue is full
> ---------------------------------------------------------------
>
>                 Key: HADOOP-11295
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11295
>             Project: Hadoop Common
>          Issue Type: Bug
>            Reporter: Ming Ma
>            Assignee: Ming Ma
>         Attachments: HADOOP-11295-2.patch, HADOOP-11295-3.patch, HADOOP-11295.patch
>
>
> If RPC server is asked to stop when RPCCallQueue is full, {{reader.join()}} will just
wait there. That is because
> 1. The reader thread is blocked on {{callQueue.put(call);}}.
> 2. When RPC server is asked to stop, it will interrupt all handler threads and thus no
threads will drain the callQueue.



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

Mime
View raw message