Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: nodejs/node-v0.x-archive
base: 5dd5ce75d7d9
Choose a base ref
...
head repository: nodejs/node-v0.x-archive
compare: 13e1131406b2
Choose a head ref
  • 1 commit
  • 2 files changed
  • 1 contributor

Commits on Mar 27, 2015

  1. test: address timing issues in simple http tests

    simple tests test-http-request-end.js, test-http-default-encoding.js
    hangs in AIX. The root cause for both the failures is related to the
    timing with which packets are sent between the client and server.
    On the client side, one factor that affects the timing is Nagle's
    algorithm. With Nagle enabled there may be a delay between two packets
    as the stack may wait until either:
      a. An acknowledgement for the first packet is received, or
      b. 200 ms elapses.
    before sending the second packet.
    
    Similarly at the server side 2 sequential packages can be delivered to
    the application either together or separatly.
    
    On AIX we see that they are delivered separately to the server, while on
    Linux delivered together. If we change the timing, for example disabling
    Nagle on AIX we see the 2 packets delivered together and the tests pass.
    
    In the test case simple/test-http-request-end.js, the client request
    handler of the server receives and stores the data in a data callback,
    closes the server in a request end callback, and writes to the client
    and ends the response, in-line with the request receipt. An HTTP parser
    module parses the incoming message, and invokes callback routines which
    are registered for HTTP events (such as header, body, end etc.)
    
    Because the termination sequence arrive in a separate packet, there is a
    delay in parsing that message and identify that the client request ended
    (and thereby invoke the request end call backhandler). Due to this delay,
    the response close happens first, which in-turn destroys the server
    socket leading to the fd and watcher removal from the uv loop abandoning
    further events on this connection, and end call back never being called,
    causing the reported hang.  simple/test-http-default-encoding.js suffers
    from the same problem.
    
    Also, remove the timer logic from the test case. Test harness anyways
    contain a timer which controls the individual tests so remove such
    controls from the test case, as suggested by @tjfontaine
    
    Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
    PR-URL: #9432
    gireeshpunathil authored and mhdawson committed Mar 27, 2015
    Copy the full SHA
    13e1131 View commit details
    Browse the repository at this point in the history