Author: snagel Date: Sun May 4 20:18:50 2014 New Revision: 1592414 URL: http://svn.apache.org/r1592414 Log: NUTCH-1182 fetcher to log hung threads
Modified: nutch/branches/2.x/CHANGES.txt nutch/branches/2.x/src/java/org/apache/nutch/fetcher/FetcherReducer.java Modified: nutch/branches/2.x/CHANGES.txt URL: http://svn.apache.org/viewvc/nutch/branches/2.x/CHANGES.txt?rev=1592414&r1=1592413&r2=1592414&view=diff ============================================================================== --- nutch/branches/2.x/CHANGES.txt (original) +++ nutch/branches/2.x/CHANGES.txt Sun May 4 20:18:50 2014 @@ -2,6 +2,8 @@ Nutch Change Log Current Development +* NUTCH-1182 fetcher to log hung threads (snagel) + * NUTCH-1618 Turn speculative execution off for Fetching (talat) * NUTCH-1657 ORIGINAL_CHAR_ENCODING and CHAR_ENCODING_FOR_CONVERSION never set in HTMLParser (talat) Modified: nutch/branches/2.x/src/java/org/apache/nutch/fetcher/FetcherReducer.java URL: http://svn.apache.org/viewvc/nutch/branches/2.x/src/java/org/apache/nutch/fetcher/FetcherReducer.java?rev=1592414&r1=1592413&r2=1592414&view=diff ============================================================================== --- nutch/branches/2.x/src/java/org/apache/nutch/fetcher/FetcherReducer.java (original) +++ nutch/branches/2.x/src/java/org/apache/nutch/fetcher/FetcherReducer.java Sun May 4 20:18:50 2014 @@ -871,7 +871,24 @@ extends GoraReducer<IntWritable, FetchEn // some requests seem to hang, despite all intentions if ((System.currentTimeMillis() - lastRequestStart.get()) > timeout) { - LOG.warn("Aborting with " + activeThreads + " hung threads."); + if (LOG.isWarnEnabled() && activeThreads.get() > 0) { + LOG.warn("Aborting with " + activeThreads + " hung threads."); + for (int i = 0; i < fetcherThreads.size(); i++) { + FetcherThread thread = fetcherThreads.get(i); + if (thread.isAlive()) { + LOG.warn("Thread #" + i + " hung while processing " + thread.reprUrl); + if (LOG.isDebugEnabled()) { + StackTraceElement[] stack = thread.getStackTrace(); + StringBuilder sb = new StringBuilder(); + sb.append("Stack of thread #").append(i).append(":\n"); + for (StackTraceElement s : stack) { + sb.append(s.toString()).append('\n'); + } + LOG.debug(sb.toString()); + } + } + } + } return; }