Uploaded image for project: 'HttpComponents HttpCore'
  1. HttpComponents HttpCore
  2. HTTPCORE-180

"I/O dispatch worker terminated abnormally" casued by NPE with extremely low timeout settings

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 4.0-beta2, 4.0-beta3
    • 4.0
    • HttpCore NIO
    • None
    • java version "1.6.0_10"
      Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
      Java HotSpot(TM) Server VM (build 11.0-b15, mixed mode)

    Description

      I'm running a high throughput nio http client (essentially a small webcrawler) through the apache HttpCore NIO extensions – my code is based largely off the sample client at http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpClient.java.

      I've manually set both the 'connection timeout' and 'socket timeout' limits to 1ms, in order to force timeouts to test a portion of my code.

      After doing so, I repeatedly get the following error: "I/O dispatch worker terminated abnormally"; it's an IOException thrown from the 'ioReactor.execute' part of the sample code mentioned above. I get it when requesting high volumes of URLs – it sometimes occours very quickly, or other times won't happen for up to 10 minutes or so.

      Here's the printStackTrack output for the 'getCause()' method on the IOexception:

      java.lang.NullPointerException
      at org.apache.http.nio.protocol.AsyncNHttpClientHandler.closed(AsyncNHttpClientHandler.java:115)
      at org.apache.http.nio.protocol.BufferingHttpClientHandler.closed(BufferingHttpClientHandler.java:98)
      at org.apache.http.impl.nio.DefaultClientIOEventDispatch.disconnected(DefaultClientIOEventDispatch.java:93)
      at org.apache.http.impl.nio.reactor.BaseIOReactor.sessionClosed(BaseIOReactor.java:222)
      at org.apache.http.impl.nio.reactor.AbstractIOReactor.processClosedSessions(AbstractIOReactor.java:277)
      at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:150)
      at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:70)
      at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:362)
      at java.lang.Thread.run(Thread.java:619)

      Even though the error seems to stem from the httpcore library, I've commented out all of my code to see if it fixes the problem – it doesn't. I tried upgrading from the 4.0-beta2 to the 4.0-beta3 release – this also does not solve the problem.

      Again, this problem only occours when connection timeout and socket timeout are set extremely low (1ms), and does not seem to occour with normal timeout values.

      Attachments

        Activity

          People

            Unassigned Unassigned
            chasw3 Chas W
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: