Revert "recover: #1517 Kill all pending accepts when TCP listener is closed (#2224)" (#2239)

Crashes while running wrk against
js/deps/https/deno.land/std/http/http_bench.ts

This reverts commit 972ac03858.
This commit is contained in:
Ryan Dahl 2019-04-28 14:15:15 -07:00 committed by GitHub
parent a4551c853e
commit 1af02b405e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 110 deletions

View file

@ -1,22 +1,6 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import { testPerm, assert, assertEquals } from "./test_util.ts";
function deferred(): {
resolve: () => void;
reject: () => void;
promise: Promise<void>;
} {
let resolve: () => void;
let reject: () => void;
const promise = new Promise<void>(
(a, b): void => {
resolve = a;
reject = b;
}
);
return { resolve, reject, promise };
}
testPerm({ net: true }, function netListenClose(): void {
const listener = Deno.listen("tcp", "127.0.0.1:4500");
listener.close();
@ -88,25 +72,24 @@ testPerm({ net: true }, async function netDialListen(): Promise<void> {
conn.close();
});
testPerm({ net: true }, async function netCloseReadSuccess(): Promise<void> {
/* TODO Fix broken test.
testPerm({ net: true }, async function netCloseReadSuccess() {
const addr = "127.0.0.1:4500";
const listener = Deno.listen("tcp", addr);
const closeDeferred = deferred();
const closeReadDeferred = deferred();
listener.accept().then(
async (conn): Promise<void> => {
await closeReadDeferred.promise;
await conn.write(new Uint8Array([1, 2, 3]));
const buf = new Uint8Array(1024);
const readResult = await conn.read(buf);
assertEquals(3, readResult.nread);
assertEquals(4, buf[0]);
assertEquals(5, buf[1]);
assertEquals(6, buf[2]);
conn.close();
closeDeferred.resolve();
}
);
listener.accept().then(async conn => {
await closeReadDeferred.promise;
await conn.write(new Uint8Array([1, 2, 3]));
const buf = new Uint8Array(1024);
const readResult = await conn.read(buf);
assertEquals(3, readResult.nread);
assertEquals(4, buf[0]);
assertEquals(5, buf[1]);
assertEquals(6, buf[2]);
conn.close();
closeDeferred.resolve();
});
const conn = await Deno.dial("tcp", addr);
conn.closeRead(); // closing read
closeReadDeferred.resolve();
@ -120,18 +103,18 @@ testPerm({ net: true }, async function netCloseReadSuccess(): Promise<void> {
listener.close();
conn.close();
});
*/
testPerm({ net: true }, async function netDoubleCloseRead(): Promise<void> {
/* TODO Fix broken test.
testPerm({ net: true }, async function netDoubleCloseRead() {
const addr = "127.0.0.1:4500";
const listener = Deno.listen("tcp", addr);
const closeDeferred = deferred();
listener.accept().then(
async (conn): Promise<void> => {
await conn.write(new Uint8Array([1, 2, 3]));
await closeDeferred.promise;
conn.close();
}
);
listener.accept().then(async conn => {
await conn.write(new Uint8Array([1, 2, 3]));
await closeDeferred.promise;
conn.close();
});
const conn = await Deno.dial("tcp", addr);
conn.closeRead(); // closing read
let err;
@ -148,18 +131,18 @@ testPerm({ net: true }, async function netDoubleCloseRead(): Promise<void> {
listener.close();
conn.close();
});
*/
testPerm({ net: true }, async function netCloseWriteSuccess(): Promise<void> {
/* TODO Fix broken test.
testPerm({ net: true }, async function netCloseWriteSuccess() {
const addr = "127.0.0.1:4500";
const listener = Deno.listen("tcp", addr);
const closeDeferred = deferred();
listener.accept().then(
async (conn): Promise<void> => {
await conn.write(new Uint8Array([1, 2, 3]));
await closeDeferred.promise;
conn.close();
}
);
listener.accept().then(async conn => {
await conn.write(new Uint8Array([1, 2, 3]));
await closeDeferred.promise;
conn.close();
});
const conn = await Deno.dial("tcp", addr);
conn.closeWrite(); // closing write
const buf = new Uint8Array(1024);
@ -183,17 +166,17 @@ testPerm({ net: true }, async function netCloseWriteSuccess(): Promise<void> {
listener.close();
conn.close();
});
*/
testPerm({ net: true }, async function netDoubleCloseWrite(): Promise<void> {
/* TODO Fix broken test.
testPerm({ net: true }, async function netDoubleCloseWrite() {
const addr = "127.0.0.1:4500";
const listener = Deno.listen("tcp", addr);
const closeDeferred = deferred();
listener.accept().then(
async (conn): Promise<void> => {
await closeDeferred.promise;
conn.close();
}
);
listener.accept().then(async conn => {
await closeDeferred.promise;
conn.close();
});
const conn = await Deno.dial("tcp", addr);
conn.closeWrite(); // closing write
let err;
@ -210,3 +193,4 @@ testPerm({ net: true }, async function netDoubleCloseWrite(): Promise<void> {
listener.close();
conn.close();
});
*/