hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Wei-Chiu Chuang (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HDFS-9612) DistCp worker threads are not terminated after jobs are done.
Date Mon, 04 Jan 2016 22:47:39 GMT

     [ https://issues.apache.org/jira/browse/HDFS-9612?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Wei-Chiu Chuang updated HDFS-9612:
----------------------------------
    Attachment: HDFS-9612.001.patch

Rev01:
In this patch, I created a test case that demonstrates these worker threads are not terminated.
There are two issues with the original implementation.
# ProducerConsumer.shutdown() calls Executor.shutdown(), which only disallow new tasks to
be submitted, but it does not interrupt existing worker threads. It should also call Executor.shutdownNow()
to interrupt them.
# ProducerConsumer$Worker.run() swallows interrupts.

In this patch, I updated ProducerConsumer with a solution. I tested this code with the attached
simple test case, which passed, but I have not yet made sure it's thread-safe. So more work
is needed.

> DistCp worker threads are not terminated after jobs are done.
> -------------------------------------------------------------
>
>                 Key: HDFS-9612
>                 URL: https://issues.apache.org/jira/browse/HDFS-9612
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: distcp
>    Affects Versions: 2.8.0
>            Reporter: Wei-Chiu Chuang
>            Assignee: Wei-Chiu Chuang
>         Attachments: HDFS-9612.001.patch
>
>
> In HADOOP-11827, a producer-consumer style thread pool was introduced to parallelize
the task of listing files/directories.
> We have a use case where a distcp job is run during the commit phase of a MR2 job. However,
it was found distcp does not terminate ProducerConsumer thread pools properly. Because threads
are not terminated, those MR2 jobs never finish.
> In a more typical use case where distcp is run as a standalone job, those threads are
terminated forcefully when the java process is terminated. So these leaked threads did not
become a problem.



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

Mime
View raw message