Skip to content
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

investigate flaky internet/test-dns-idna2008 test #25870

Closed
Trott opened this issue Feb 1, 2019 · 19 comments · Fixed by #26473
Closed

investigate flaky internet/test-dns-idna2008 test #25870

Trott opened this issue Feb 1, 2019 · 19 comments · Fixed by #26473
Labels
dns Issues and PRs related to the dns subsystem. flaky-test Issues and PRs related to the tests with unstable failures on the CI.

Comments

@Trott
Copy link
Member

Trott commented Feb 1, 2019

test/internet/test-dns-idna2008.js (added in four days ago when #25679 landed) failed in CI a few hours ago:

https://ci.nodejs.org/job/node-test-commit-custom-suites/855/default/console

Host: test-rackspace-ubuntu1604-x64-2

00:01:48 not ok 9 internet/test-dns-idna2008
00:01:48   ---
00:01:48   duration_ms: 1.14
00:01:48   severity: fail
00:01:48   exitcode: 1
00:01:48   stack: |-
00:01:48     (node:4568) ExperimentalWarning: The dns.promises API is experimental
00:01:48     assert.js:753
00:01:48         throw newErr;
00:01:48         ^
00:01:48     
00:01:48     AssertionError [ERR_ASSERTION]: ifError got unwanted exception: queryA ESERVFAIL straße.de
00:01:48         at QueryReqWrap.dns.resolve4.mustCall (/home/iojs/build/workspace/node-test-commit-custom-suites/default/test/internet/test-dns-idna2008.js:27:10)
00:01:48         at QueryReqWrap.callback (/home/iojs/build/workspace/node-test-commit-custom-suites/default/test/common/index.js:368:15)
00:01:48         at QueryReqWrap.onresolve [as oncomplete] (dns.js:199:10)
00:01:48         at QueryReqWrap.onresolve [as oncomplete] (dns.js:199:19)
00:01:48   ...

It had previously succeeded in CI (see https://ci.nodejs.org/job/node-test-commit-custom-suites/852/default/console).

I guess ESERVFAIL is a DNS problem likely unrelated to the test itself? Although other DNS tests in internet ran just fine, so maybe it is in fact specific to this test?

@bnoordhuis

@Trott Trott added dns Issues and PRs related to the dns subsystem. flaky-test Issues and PRs related to the tests with unstable failures on the CI. labels Feb 1, 2019
@bnoordhuis
Copy link
Member

It's been a one-time failure so far? ESERVFAIL is reported by the DNS server; could be a temporary service outage.

@Trott
Copy link
Member Author

Trott commented Feb 2, 2019

It's been a one-time failure so far? ESERVFAIL is reported by the DNS server; could be a temporary service outage.

I had the temporary-hiccup idea too, but other DNS tests in the internet suite didn't fail. Still, the implication I'm getting from your comment--that there's probably not much point in chasing it down unless we see it more than once--is no doubt correct. Maybe leave this open for a bit and close it after a week or so if we don't see it again?

@Trott
Copy link
Member Author

Trott commented Feb 2, 2019

Failed again today:

https://ci.nodejs.org/job/node-test-commit-custom-suites/856/default/console

test-rackspace-ubuntu1604-x64-1

00:16:53 not ok 9 internet/test-dns-idna2008
00:16:53   ---
00:16:53   duration_ms: 1.14
00:16:53   severity: fail
00:16:53   exitcode: 1
00:16:53   stack: |-
00:16:53     (node:22610) ExperimentalWarning: The dns.promises API is experimental
00:16:53     assert.js:753
00:16:53         throw newErr;
00:16:53         ^
00:16:54     
00:16:54     AssertionError [ERR_ASSERTION]: ifError got unwanted exception: queryA ESERVFAIL straße.de
00:16:54         at QueryReqWrap.dns.resolve4.mustCall (/home/iojs/build/workspace/node-test-commit-custom-suites/default/test/internet/test-dns-idna2008.js:27:10)
00:16:54         at QueryReqWrap.callback (/home/iojs/build/workspace/node-test-commit-custom-suites/default/test/common/index.js:367:15)
00:16:54         at QueryReqWrap.onresolve [as oncomplete] (dns.js:199:10)
00:16:54         at QueryReqWrap.onresolve [as oncomplete] (dns.js:199:19)
00:16:54   ...

@bnoordhuis
Copy link
Member

I'll take a look but I wonder if it's an environmental issue (i.e., network issue) because it never fails for me locally. What about you?

@Trott
Copy link
Member Author

Trott commented Feb 3, 2019

I'll take a look but I wonder if it's an environmental issue (i.e., network issue) because it never fails for me locally. What about you?

I've not had it fail locally either. It passed in last night's run on test-rackspace-ubuntu1604-x64-2.

To get a baseline (or to see if it passes 7 times, and then the firewall kicks in and it fails the remaining 93 times or whatever), here's 100 runs in CI:

https://ci.nodejs.org/job/node-stress-single-test/2147/

@Trott
Copy link
Member Author

Trott commented Feb 3, 2019

To get a baseline (or to see if it passes 7 times, and then the firewall kicks in and it fails the remaining 93 times or whatever), here's 100 runs in CI:

https://ci.nodejs.org/job/node-stress-single-test/2147/

No failures in stress test on test-rackspace-ubuntu1604-x64-2.

Re-running, but with all internet tests, but only 10 consecutive runs:

https://ci.nodejs.org/job/node-stress-single-test/2148/

@Trott
Copy link
Member Author

Trott commented Feb 3, 2019

Re-running, but with all internet tests, but only 10 consecutive runs:

https://ci.nodejs.org/job/node-stress-single-test/2148/

Also successful on test-rackspace-ubuntu1604-x64-2.
¯\(ツ)

@Trott
Copy link
Member Author

Trott commented Mar 3, 2019

Happened in CI again today.

https://ci.nodejs.org/job/node-test-commit-custom-suites/897/default/console

test-rackspace-ubuntu1604-x64-1

00:05:33 not ok 9 internet/test-dns-idna2008
00:05:33   ---
00:05:33   duration_ms: 25.277
00:05:33   severity: fail
00:05:33   exitcode: 1
00:05:33   stack: |-
00:05:33     (node:18514) ExperimentalWarning: The dns.promises API is experimental
00:05:33     assert.js:742
00:05:33         throw newErr;
00:05:33         ^
00:05:33     
00:05:33     AssertionError [ERR_ASSERTION]: ifError got unwanted exception: queryA ESERVFAIL straße.de
00:05:33         at QueryReqWrap.dns.resolve4.mustCall (/home/iojs/build/workspace/node-test-commit-custom-suites/default/test/internet/test-dns-idna2008.js:27:10)
00:05:33         at QueryReqWrap.callback (/home/iojs/build/workspace/node-test-commit-custom-suites/default/test/common/index.js:367:15)
00:05:33         at QueryReqWrap.onresolve [as oncomplete] (dns.js:199:10)
00:05:33         at QueryReqWrap.onresolve [as oncomplete] (dns.js:199:19)
00:05:33   ...

@Trott Trott pinned this issue Mar 3, 2019
@Trott
Copy link
Member Author

Trott commented Mar 4, 2019

Again today:

https://ci.nodejs.org/job/node-test-commit-custom-suites/898/default/console

test-rackspace-ubuntu1604-x64-1

00:04:15 not ok 9 internet/test-dns-idna2008
00:04:15   ---
00:04:15   duration_ms: 35.304
00:04:15   severity: fail
00:04:16   exitcode: 1
00:04:16   stack: |-
00:04:16     (node:25878) ExperimentalWarning: The dns.promises API is experimental
00:04:16     /home/iojs/build/workspace/node-test-commit-custom-suites/default/test/common/index.js:675
00:04:16     const crashOnUnhandledRejection = (err) => { throw err; };
00:04:16                                                  ^
00:04:16     
00:04:16     Error: queryA ESERVFAIL straße.de
00:04:16         at QueryReqWrap.onresolve [as oncomplete] (internal/dns/promises.js:167:17)
00:04:16   ...

@Trott
Copy link
Member Author

Trott commented Mar 5, 2019

It failed again today. So it failed each of the last three runs. (The test is run once a day in CI.) Interesting that when it fails, it fails reliably. And when it doesn't fail, it doesn't fail at all.

https://ci.nodejs.org/job/node-test-commit-custom-suites/899/default/console

test-rackspace-ubuntu1604-x64-1

00:04:16 not ok 9 internet/test-dns-idna2008
00:04:16   ---
00:04:16   duration_ms: 30.292
00:04:16   severity: fail
00:04:16   exitcode: 1
00:04:16   stack: |-
00:04:16     (node:22481) ExperimentalWarning: The dns.promises API is experimental
00:04:16     /home/iojs/build/workspace/node-test-commit-custom-suites/default/test/common/index.js:675
00:04:16     const crashOnUnhandledRejection = (err) => { throw err; };
00:04:16                                                  ^
00:04:16     
00:04:16     Error: queryA ESERVFAIL straße.de
00:04:16         at QueryReqWrap.onresolve [as oncomplete] (internal/dns/promises.js:167:17)
00:04:16   ...

@Trott
Copy link
Member Author

Trott commented Mar 5, 2019

@nodejs/build Thoughts on this one?

@Trott
Copy link
Member Author

Trott commented Mar 5, 2019

Ooh, this time around things are different from when initially reported. The test is taking 30 seconds or so before failing. Probably some throttling going on somewhere, yeah? I'm logged on and will try running the lookups/resolves in series rather than in parallel and see if that does anything...

@Trott
Copy link
Member Author

Trott commented Mar 5, 2019

Nope, still fails even with just one query and still takes about a long time to fail....

@Trott
Copy link
Member Author

Trott commented Mar 5, 2019

(Although it failed with EAGAIN instead of ESERVFAIL....)

@Trott
Copy link
Member Author

Trott commented Mar 6, 2019

And again:

https://ci.nodejs.org/job/node-test-commit-custom-suites/900/default/

test-rackspace-ubuntu1604-x64-1

00:19:37 not ok 9 internet/test-dns-idna2008
00:19:37   ---
00:19:37   duration_ms: 30.288
00:19:37   severity: fail
00:19:37   exitcode: 1
00:19:37   stack: |-
00:19:37     (node:1531) ExperimentalWarning: The dns.promises API is experimental
00:19:37     /home/iojs/build/workspace/node-test-commit-custom-suites/default/test/common/index.js:675
00:19:37     const crashOnUnhandledRejection = (err) => { throw err; };
00:19:37                                                  ^
00:19:37     
00:19:37     Error: queryA ESERVFAIL straße.de
00:19:37         at QueryReqWrap.onresolve [as oncomplete] (internal/dns/promises.js:167:17)
00:19:37   ...

@Trott
Copy link
Member Author

Trott commented Mar 6, 2019

FWIW, a reboot does not appear to have fixed it.

@refack refack self-assigned this Mar 7, 2019
@richardlau richardlau unpinned this issue Mar 8, 2019
@richardlau
Copy link
Member

richardlau commented Mar 8, 2019

@Trott I've (temporarily) unpinned this issue as we can only have three pinned and I think the current test breakage on master (#26528) should definitely be pinned. We can swap then back when master is unbroken.

@refack
Copy link
Contributor

refack commented Mar 8, 2019

So... node-daily-master is unbroke.
But... this test will still be flaky if the system's DNS server fail to resolve straße.de.
.
.
.
I just had an idea: pass the dns.lookup test if the error is Error: queryA ESERVFAIL straße.de since IIUC it mean node passed the correct query to the OS.

refack added a commit to refack/node that referenced this issue Mar 9, 2019
* use known well-behaved DNS server
* force pass on ESERVFAIL

PR-URL: nodejs#26473
Fixes: nodejs#25870
Reviewed-By: Gireesh Punathil <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
@refack
Copy link
Contributor

refack commented Mar 10, 2019

@refack refack removed their assignment Mar 11, 2019
refack added a commit to refack/node that referenced this issue Mar 12, 2019
Fixes a bug I introduced in 9613221

PR-URL: nodejs#26570
Refs: nodejs#25870
Refs: nodejs#26473
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
BridgeAR pushed a commit that referenced this issue Mar 13, 2019
* use known well-behaved DNS server
* force pass on ESERVFAIL

PR-URL: #26473
Fixes: #25870
Reviewed-By: Gireesh Punathil <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
BridgeAR pushed a commit that referenced this issue Mar 13, 2019
Fixes a bug I introduced in 9613221

PR-URL: #26570
Refs: #25870
Refs: #26473
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
BridgeAR pushed a commit that referenced this issue Mar 14, 2019
* use known well-behaved DNS server
* force pass on ESERVFAIL

PR-URL: #26473
Fixes: #25870
Reviewed-By: Gireesh Punathil <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
BridgeAR pushed a commit that referenced this issue Mar 14, 2019
Fixes a bug I introduced in 9613221

PR-URL: #26570
Refs: #25870
Refs: #26473
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
BridgeAR pushed a commit to BridgeAR/node that referenced this issue Mar 14, 2019
Fixes a bug I introduced in 9613221

PR-URL: nodejs#26570
Refs: nodejs#25870
Refs: nodejs#26473
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
BridgeAR pushed a commit that referenced this issue Mar 14, 2019
Fixes a bug I introduced in 9613221

PR-URL: #26570
Refs: #25870
Refs: #26473
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
Trott added a commit to Trott/io.js that referenced this issue Apr 13, 2019
The test should pass if ESERVFAIL is the result.

Refs: nodejs#25870 (comment)
Trott added a commit to Trott/io.js that referenced this issue Apr 15, 2019
The test should pass if ESERVFAIL is the result.

Refs: nodejs#25870 (comment)

PR-URL: nodejs#27208
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Refael Ackermann <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dns Issues and PRs related to the dns subsystem. flaky-test Issues and PRs related to the tests with unstable failures on the CI.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants