-
Notifications
You must be signed in to change notification settings - Fork 30.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
AIX - failure in parallel/test-cluster-disconnect-handles #7563
Comments
Will debug further with hints 2 and 3 as my starting points. |
In truss output, noticed that master fails to connect to the TCP server setup in the worker: |
Turns out that connect failure is not with the TCP server, but with the debugger. Threw the error which came into the process' uncaught exception handler, leaving the worker alive: bash-4.3$ ./node --expose_internals test/parallel/test-cluster-disconnect-handles.js Error: connect ECONNREFUSED :::12346 Check the worker status: bash-4.3$ netstat -na | grep 12346 Clearly, the master is not connecting to where debug server (worker) is listening. Debugger listening on [::1]:12346 (IPV6 loopback address) |
A simplified client-server test case - passes in other platforms (such as OSX) but fails in AIX with: Error: connect ECONNREFUSED :::45200
|
This patch resolves the issue, but digging deeper to get better insights
|
https://tools.ietf.org/html/rfc4291#section-2.5.2 suggests that the unspecified address ('::') should not be used for endpoints. However, a default server socket created uses unspecified address as its end-point, rather than the loopback address (::1)
thoughts? |
@gireeshpunathil Might be related to #7288 if |
thanks @gibfahn , will check that. |
@gibfahn , I checked what you suggested but looks like that is not the cause: In the case you mentioned, the issue is with the resolution of loopback address to '::1' and the necessity for this mapping be available in /etc/hosts In this case, the issue is lack of interchangeability between '::' and '::1' There exists no documented evidence which supports their interchanged use, and yet most of the platforms (except AIX) seem to support this. Precisely, if you start a server socket which is bound to '::1' then it is able to accept requests from sockets which connect through '::' and vice-versa. This does not happen in AIX. A server socket bound to '::' is reachable for a client only if it connects to '::'. Same thing applies to '::1' - apparently they discretely different in AIX. My inference is that AIX strictly follows the IPV6 specification with respect to unspecified address ('::') and loopback address ('::1'), and the test case latches on to the behavior exhibited by other platforms, and hence it fails in AIX. My proposal is to fix it in the test case to make it work in all platforms including AIX. Will wait for comments before raising a PR. Thanks. |
@gireeshpunathil Sorry, wrong PR! Should have been #7291 Looks like the same problem on Windows |
Thanks @gibfahn - that is a perfect match. Can you please run the sample test case in #7563 (comment) in windows and see if it fails as well? My laptop is a new Mac and am yet to figure out how to connect to a remote windows test machine. thanks in advance. |
Checked in Windows. Result is that it does not work with unspecified address ('::'), the client throws EADDRNOTAVIL. Working on a PR |
The test case fails in AIX due to the mixed-use of unspecified and loopback addresses. This is not a problem in most platforms but fails in AIX. (In Windows too, but does not manifest as the test is omitted in Windows for a different reason). There exists no documented evidence which supports the mixed use of unspecified and loopback addresses. While AIX strictly follows the IPV6 specification with respect to unspecified address ('::') and loopback address ('::1'), the test case latches on to the behavior exhibited by other platforms, and hence it fails in AIX. The proposed fix is to make it work in all platforms including AIX by using the loopback address for the client to connect, as that is the address at which the server listens. Fixes: #7563 PR-URL: #7702 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
The test case fails in AIX due to the mixed-use of unspecified and loopback addresses. This is not a problem in most platforms but fails in AIX. (In Windows too, but does not manifest as the test is omitted in Windows for a different reason). There exists no documented evidence which supports the mixed use of unspecified and loopback addresses. While AIX strictly follows the IPV6 specification with respect to unspecified address ('::') and loopback address ('::1'), the test case latches on to the behavior exhibited by other platforms, and hence it fails in AIX. The proposed fix is to make it work in all platforms including AIX by using the loopback address for the client to connect, as that is the address at which the server listens. Fixes: #7563 PR-URL: #7702 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
The test case fails in AIX due to the mixed-use of unspecified and loopback addresses. This is not a problem in most platforms but fails in AIX. (In Windows too, but does not manifest as the test is omitted in Windows for a different reason). There exists no documented evidence which supports the mixed use of unspecified and loopback addresses. While AIX strictly follows the IPV6 specification with respect to unspecified address ('::') and loopback address ('::1'), the test case latches on to the behavior exhibited by other platforms, and hence it fails in AIX. The proposed fix is to make it work in all platforms including AIX by using the loopback address for the client to connect, as that is the address at which the server listens. Fixes: #7563 PR-URL: #7702 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
The test case fails in AIX due to the mixed-use of unspecified and loopback addresses. This is not a problem in most platforms but fails in AIX. (In Windows too, but does not manifest as the test is omitted in Windows for a different reason). There exists no documented evidence which supports the mixed use of unspecified and loopback addresses. While AIX strictly follows the IPV6 specification with respect to unspecified address ('::') and loopback address ('::1'), the test case latches on to the behavior exhibited by other platforms, and hence it fails in AIX. The proposed fix is to make it work in all platforms including AIX by using the loopback address for the client to connect, as that is the address at which the server listens. Fixes: #7563 PR-URL: #7702 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
The test case fails in AIX due to the mixed-use of unspecified and loopback addresses. This is not a problem in most platforms but fails in AIX. (In Windows too, but does not manifest as the test is omitted in Windows for a different reason). There exists no documented evidence which supports the mixed use of unspecified and loopback addresses. While AIX strictly follows the IPV6 specification with respect to unspecified address ('::') and loopback address ('::1'), the test case latches on to the behavior exhibited by other platforms, and hence it fails in AIX. The proposed fix is to make it work in all platforms including AIX by using the loopback address for the client to connect, as that is the address at which the server listens. Fixes: #7563 PR-URL: #7702 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
https://ci.nodejs.org/job/node-test-commit-aix/247/nodes=aix61-ppc64/console
The text was updated successfully, but these errors were encountered: