Repository navigation
investigate flaky test-http2-respond-file-error-pipe-offset #35881
Description
Activity
- addedflaky-testIssues and PRs involving tests that fail intermittently in CI.Issues and PRs involving tests that fail intermittently in CI.
on Oct 30, 2020 test-joyent-ubuntu1804_sharedlibs_container-x64-4
00:14:22 not ok 1292 parallel/test-http2-respond-file-error-pipe-offset 00:14:22 --- 00:14:22 duration_ms: 0.438 00:14:22 severity: fail 00:14:22 exitcode: 1 00:14:22 stack: |- 00:14:22 node:assert:885 00:14:22 throw newErr; 00:14:22 ^ 00:14:22 00:14:22 AssertionError [ERR_ASSERTION]: ifError got unwanted exception: EPIPE: broken pipe, write 00:14:22 at /home/iojs/build/workspace/node-test-commit-linux-containered/test/common/index.js:340:12 00:14:22 at /home/iojs/build/workspace/node-test-commit-linux-containered/test/common/index.js:377:15 00:14:22 at close (node:fs:1417:11) 00:14:22 at FSReqCallback.oncomplete (node:fs:171:23) 00:14:22 { 00:14:22 generatedMessage: false, 00:14:22 code: 'ERR_ASSERTION', 00:14:22 actual: [Error: EPIPE: broken pipe, write] { 00:14:22 errno: -32, 00:14:22 code: 'EPIPE', 00:14:22 syscall: 'write' 00:14:22 }, 00:14:22 expected: null, 00:14:22 operator: 'ifError' 00:14:22 } 00:14:22 ...- addedhttp2Issues and PRs related to the http2 subsystem.Issues and PRs related to the http2 subsystem.
on Oct 30, 2020 /ping @addaleax
/ping @tniessen Possibly a result of adding
common.mustSucceed()recently? (Maybe that has uncovered a bug in the logic? Or maybe not. I'm doing a very superficial evaluation right now.)Here's another one.
https://ci.nodejs.org/job/node-test-commit-plinux/35704/nodes=centos7-ppcle/console
test-osuosl-centos7-ppc64_le-200:08:00 not ok 1416 parallel/test-http2-respond-file-error-pipe-offset 00:08:00 --- 00:08:00 duration_ms: 0.146 00:08:00 severity: fail 00:08:00 exitcode: 1 00:08:00 stack: |- 00:08:00 node:assert:885 00:08:00 throw newErr; 00:08:00 ^ 00:08:00 00:08:00 AssertionError [ERR_ASSERTION]: ifError got unwanted exception: EPIPE: broken pipe, write 00:08:00 at /home/iojs/build/workspace/node-test-commit-plinux/nodes/centos7-ppcle/test/common/index.js:340:12 00:08:00 at /home/iojs/build/workspace/node-test-commit-plinux/nodes/centos7-ppcle/test/common/index.js:377:15 00:08:00 at close (node:fs:1417:11) 00:08:00 at FSReqCallback.oncomplete (node:fs:171:23) 00:08:00 { 00:08:00 generatedMessage: false, 00:08:00 code: 'ERR_ASSERTION', 00:08:00 actual: [Error: EPIPE: broken pipe, write] { 00:08:00 errno: -32, 00:08:00 code: 'EPIPE', 00:08:00 syscall: 'write' 00:08:00 }, 00:08:00 expected: null, 00:08:00 operator: 'ifError' 00:08:00 } 00:08:00 ...Last one for now.
https://ci.nodejs.org/job/node-test-commit-linuxone/23764/nodes=rhel7-s390x/consoleText
test-ibm-rhel7-s390x-4not ok 1241 parallel/test-http2-respond-file-error-pipe-offset --- duration_ms: 0.67 severity: fail exitcode: 1 stack: |- node:assert:885 throw newErr; ^ AssertionError [ERR_ASSERTION]: ifError got unwanted exception: EPIPE: broken pipe, write at /home/iojs/build/workspace/node-test-commit-linuxone/nodes/rhel7-s390x/test/common/index.js:340:12 at /home/iojs/build/workspace/node-test-commit-linuxone/nodes/rhel7-s390x/test/common/index.js:377:15 at close (node:fs:1417:11) at FSReqCallback.oncomplete (node:fs:171:23) { generatedMessage: false, code: 'ERR_ASSERTION', actual: [Error: EPIPE: broken pipe, write] { errno: -32, code: 'EPIPE', syscall: 'write' }, expected: null, operator: 'ifError' } .../ping @tniessen Possibly a result of adding
common.mustSucceed()recently? (Maybe that has uncovered a bug in the logic? Or maybe not. I'm doing a very superficial evaluation right now.)@Trott Good question! When I updated this test, I assumed the call to
writeFileis expected to succeed, which doesn't always seem to be the case. The previousmustCall()callback simply ignored the error.- If this error is expected to never occur, then switching to
mustSucceedhas uncovered a bug and we should investigate why this error occurs. - If this error is expected to occur sometimes, we need to switch back to
mustCall(), but should add an explaining comment and an assertion regarding the type/code of the error. - If this error is expected to always occur, the test case should assert that it does.
Reacted by Myles Borins- If this error is expected to never occur, then switching to
- added 2 commits that reference this issue
on Oct 30, 2020 - If this error is expected to never occur, then switching to
mustSucceedhas uncovered a bug and we should investigate why this error occurs. - If this error is expected to occur sometimes, we need to switch back to
mustCall(), but should add an explaining comment and an assertion regarding the type/code of the error. - If this error is expected to always occur, the test case should assert that it does.
@addaleax Do you have any insight as to whether the error here should be expected to occur sometimes and can be ignored or not?
- If this error is expected to never occur, then switching to
https://ci.nodejs.org/job/node-test-commit-linux/38406/nodes=alpine-latest-x64/consoleText
not ok 1267 parallel/test-http2-respond-file-error-pipe-offset # TODO : Fix flaky test --- duration_ms: 0.224 severity: flaky exitcode: 1 stack: |- node:assert:885 throw newErr; ^ AssertionError [ERR_ASSERTION]: ifError got unwanted exception: EPIPE: broken pipe, write at /home/iojs/build/workspace/node-test-commit-linux/nodes/alpine-latest-x64/test/common/index.js:340:12 at /home/iojs/build/workspace/node-test-commit-linux/nodes/alpine-latest-x64/test/common/index.js:377:15 at close (node:fs:1452:11) at FSReqCallback.oncomplete (node:fs:180:23) { generatedMessage: false, code: 'ERR_ASSERTION', actual: [Error: EPIPE: broken pipe, write] { errno: -32, code: 'EPIPE', syscall: 'write' }, expected: null, operator: 'ifError' } ...https://ci.nodejs.org/job/node-test-commit-linux/nodes=alpine-latest-x64/38508/consoleText
not ok 1267 parallel/test-http2-respond-file-error-pipe-offset # TODO : Fix flaky test --- duration_ms: 0.153 severity: flaky exitcode: 1 stack: |- node:assert:900 throw newErr; ^ AssertionError [ERR_ASSERTION]: ifError got unwanted exception: EPIPE: broken pipe, write at /home/iojs/build/workspace/node-test-commit-linux/nodes/alpine-latest-x64/test/common/index.js:340:12 at /home/iojs/build/workspace/node-test-commit-linux/nodes/alpine-latest-x64/test/common/index.js:377:15 at close (node:fs:1459:11) at FSReqCallback.oncomplete (node:fs:187:23) { generatedMessage: false, code: 'ERR_ASSERTION', actual: [Error: EPIPE: broken pipe, write] { errno: -32, code: 'EPIPE', syscall: 'write' }, expected: null, operator: 'ifError' } ...1 remaining item
Because the test is sensitive to resources (based on #35881 (comment)) and it seems to be failing on the low-resource Alpine Linux, possible solutions (assuming the failure is expected in those situations) might be skip the test on low-resource machines or the dreaded move-to-sequential.
I think the situation we're in is this:
If this error is expected to occur sometimes, we need to switch back to mustCall(), but should add an explaining comment and an assertion regarding the type/code of the error.
It's possible for the reading end of the pipe to get the expected error
and break everything down before we're finished, so allowEPIPEbut
no other errors.Proposed fix: #36305
- added a commit that references this issue
on Dec 7, 2020 - added a commit that references this issue
on Apr 25, 2021
https://ci.nodejs.org/job/node-test-commit-linux/nodes=alpine-last-latest-x64/37918/
test-joyent-alpine311_container-x64-1