hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Laurent Goujon (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HADOOP-10289) o.a.h.u.ReflectionUtils.printThreadInfo() causes deadlock in TestHttpServer
Date Sat, 25 Jan 2014 20:06:39 GMT
Laurent Goujon created HADOOP-10289:

             Summary: o.a.h.u.ReflectionUtils.printThreadInfo() causes deadlock in TestHttpServer
                 Key: HADOOP-10289
                 URL: https://issues.apache.org/jira/browse/HADOOP-10289
             Project: Hadoop Common
          Issue Type: Bug
          Components: util
    Affects Versions: 3.0.0, 2.4.0
         Environment: MacOS X 10.9/Java 6 1.6.0_65-b14-462
            Reporter: Laurent Goujon

This bug is a followup on HADOOP-9964

ReflectionUtils.printThreadInfo is now a synchronized method. This change creates sometimes
deadlock situation in TestHttpServer if one servlet thread calling this method is waiting
on client to consume output.

In TestHttpServer, several tests connect to the http server only to check the status code
but without reading the full inputstream. Depending on HttpURLConnection, the deadlock scenario
may be triggered or not.

Note that in the original ticket, it is not explained why synchronized fixed the issue. According
to the attached stacktrace, test was blocked on HttpServer.stop(), waiting on worker threads
to stop, which didn't happen because those threads were waiting for their output to be consumed,
so the original issue looks very similar to what I'm experiencing.

My proposed fix is to remove synchronized (as it seems to make the issue worse) but configure
HttpServer.stop() to forcibly kill threads after a configurable period of time

This message was sent by Atlassian JIRA

View raw message