Fix: Close current connections to LensProxy on quit

- This speeds up quitting

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton committed 2023-04-12 15:15:36 -04:00
1 parent 2c4a7ecfb4
commit 6c91224b17
3 files changed
+28 -5

No files matched your search

+2
View File
@@ -168,6 +168,7 @@
"rfc6902": "^5.0.1",
"selfsigned": "^2.1.1",
"semver": "^7.3.8",
"stoppable": "^1.1.0",
"tar": "^6.1.13",
"tcp-port-used": "^1.0.2",
"tempy": "1.0.1",
@@ -228,6 +229,7 @@
"@types/react-window": "^1.8.5",
"@types/readable-stream": "^2.3.13",
"@types/semver": "^7.3.13",
"@types/stoppable": "^1.1.1",
"@types/tar": "^6.1.4",
"@types/tcp-port-used": "^1.0.1",
"@types/triple-beam": "^1.3.2",
@@ -18,6 +18,7 @@ import type { EmitAppEvent } from "../../common/app-event-bus/emit-event.injecta
import type { Logger } from "../../common/logger";
import type { SelfSignedCert } from "selfsigned";
import type { KubeAuthProxyServer } from "../cluster/kube-auth-proxy-server.injectable";
import stoppable from "stoppable";
export type GetClusterForRequest = (req: http.IncomingMessage) => Cluster | undefined;
export type ServerIncomingMessage = SetRequired<http.IncomingMessage, "url" | "method">;
@@ -65,14 +66,14 @@ const disallowedPorts = new Set([
]);
export class LensProxy {
protected proxyServer: https.Server;
protected readonly proxyServer: https.Server & stoppable.WithStop;
protected closed = false;
protected retryCounters = new Map<string, number>();
protected readonly retryCounters = new Map<string, number>();
constructor(private readonly dependencies: Dependencies) {
this.configureProxy(dependencies.proxy);
this.proxyServer = https.createServer(
this.proxyServer = stoppable(https.createServer(
{
key: dependencies.certificate.private,
cert: dependencies.certificate.cert,
@@ -80,7 +81,7 @@ export class LensProxy {
(req, res) => {
this.handleRequest(req as ServerIncomingMessage, res);
},
);
), 500);
this.proxyServer
.on("upgrade", (req: ServerIncomingMessage, socket: net.Socket, head: Buffer) => {
@@ -175,7 +176,7 @@ export class LensProxy {
this.dependencies.logger.info("[LENS-PROXY]: Closing server");
return new Promise<void>((resolve) => {
this.proxyServer.close(() => resolve());
this.proxyServer.stop(() => resolve());
});
}