mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
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:
parent
2c4a7ecfb4
commit
6c91224b17
20
package-lock.json
generated
20
package-lock.json
generated
@ -10240,6 +10240,15 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
|
||||||
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw=="
|
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw=="
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/stoppable": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/stoppable/-/stoppable-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-b8N+fCADRIYYrGZOcmOR8ZNBOqhktWTB/bMUl5LvGtT201QKJZOOH5UsFyI3qtteM6ZAJbJqZoBcLqqxKIwjhw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/tar": {
|
"node_modules/@types/tar": {
|
||||||
"version": "6.1.4",
|
"version": "6.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.4.tgz",
|
||||||
@ -34609,6 +34618,15 @@
|
|||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/stoppable": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4",
|
||||||
|
"npm": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/stream-buffers": {
|
"node_modules/stream-buffers": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz",
|
||||||
@ -38380,6 +38398,7 @@
|
|||||||
"rfc6902": "^5.0.1",
|
"rfc6902": "^5.0.1",
|
||||||
"selfsigned": "^2.1.1",
|
"selfsigned": "^2.1.1",
|
||||||
"semver": "^7.3.8",
|
"semver": "^7.3.8",
|
||||||
|
"stoppable": "^1.1.0",
|
||||||
"tar": "^6.1.13",
|
"tar": "^6.1.13",
|
||||||
"tcp-port-used": "^1.0.2",
|
"tcp-port-used": "^1.0.2",
|
||||||
"tempy": "1.0.1",
|
"tempy": "1.0.1",
|
||||||
@ -38440,6 +38459,7 @@
|
|||||||
"@types/react-window": "^1.8.5",
|
"@types/react-window": "^1.8.5",
|
||||||
"@types/readable-stream": "^2.3.13",
|
"@types/readable-stream": "^2.3.13",
|
||||||
"@types/semver": "^7.3.13",
|
"@types/semver": "^7.3.13",
|
||||||
|
"@types/stoppable": "^1.1.1",
|
||||||
"@types/tar": "^6.1.4",
|
"@types/tar": "^6.1.4",
|
||||||
"@types/tcp-port-used": "^1.0.1",
|
"@types/tcp-port-used": "^1.0.1",
|
||||||
"@types/triple-beam": "^1.3.2",
|
"@types/triple-beam": "^1.3.2",
|
||||||
|
|||||||
@ -168,6 +168,7 @@
|
|||||||
"rfc6902": "^5.0.1",
|
"rfc6902": "^5.0.1",
|
||||||
"selfsigned": "^2.1.1",
|
"selfsigned": "^2.1.1",
|
||||||
"semver": "^7.3.8",
|
"semver": "^7.3.8",
|
||||||
|
"stoppable": "^1.1.0",
|
||||||
"tar": "^6.1.13",
|
"tar": "^6.1.13",
|
||||||
"tcp-port-used": "^1.0.2",
|
"tcp-port-used": "^1.0.2",
|
||||||
"tempy": "1.0.1",
|
"tempy": "1.0.1",
|
||||||
@ -228,6 +229,7 @@
|
|||||||
"@types/react-window": "^1.8.5",
|
"@types/react-window": "^1.8.5",
|
||||||
"@types/readable-stream": "^2.3.13",
|
"@types/readable-stream": "^2.3.13",
|
||||||
"@types/semver": "^7.3.13",
|
"@types/semver": "^7.3.13",
|
||||||
|
"@types/stoppable": "^1.1.1",
|
||||||
"@types/tar": "^6.1.4",
|
"@types/tar": "^6.1.4",
|
||||||
"@types/tcp-port-used": "^1.0.1",
|
"@types/tcp-port-used": "^1.0.1",
|
||||||
"@types/triple-beam": "^1.3.2",
|
"@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 { Logger } from "../../common/logger";
|
||||||
import type { SelfSignedCert } from "selfsigned";
|
import type { SelfSignedCert } from "selfsigned";
|
||||||
import type { KubeAuthProxyServer } from "../cluster/kube-auth-proxy-server.injectable";
|
import type { KubeAuthProxyServer } from "../cluster/kube-auth-proxy-server.injectable";
|
||||||
|
import stoppable from "stoppable";
|
||||||
|
|
||||||
export type GetClusterForRequest = (req: http.IncomingMessage) => Cluster | undefined;
|
export type GetClusterForRequest = (req: http.IncomingMessage) => Cluster | undefined;
|
||||||
export type ServerIncomingMessage = SetRequired<http.IncomingMessage, "url" | "method">;
|
export type ServerIncomingMessage = SetRequired<http.IncomingMessage, "url" | "method">;
|
||||||
@ -65,14 +66,14 @@ const disallowedPorts = new Set([
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
export class LensProxy {
|
export class LensProxy {
|
||||||
protected proxyServer: https.Server;
|
protected readonly proxyServer: https.Server & stoppable.WithStop;
|
||||||
protected closed = false;
|
protected closed = false;
|
||||||
protected retryCounters = new Map<string, number>();
|
protected readonly retryCounters = new Map<string, number>();
|
||||||
|
|
||||||
constructor(private readonly dependencies: Dependencies) {
|
constructor(private readonly dependencies: Dependencies) {
|
||||||
this.configureProxy(dependencies.proxy);
|
this.configureProxy(dependencies.proxy);
|
||||||
|
|
||||||
this.proxyServer = https.createServer(
|
this.proxyServer = stoppable(https.createServer(
|
||||||
{
|
{
|
||||||
key: dependencies.certificate.private,
|
key: dependencies.certificate.private,
|
||||||
cert: dependencies.certificate.cert,
|
cert: dependencies.certificate.cert,
|
||||||
@ -80,7 +81,7 @@ export class LensProxy {
|
|||||||
(req, res) => {
|
(req, res) => {
|
||||||
this.handleRequest(req as ServerIncomingMessage, res);
|
this.handleRequest(req as ServerIncomingMessage, res);
|
||||||
},
|
},
|
||||||
);
|
), 500);
|
||||||
|
|
||||||
this.proxyServer
|
this.proxyServer
|
||||||
.on("upgrade", (req: ServerIncomingMessage, socket: net.Socket, head: Buffer) => {
|
.on("upgrade", (req: ServerIncomingMessage, socket: net.Socket, head: Buffer) => {
|
||||||
@ -175,7 +176,7 @@ export class LensProxy {
|
|||||||
this.dependencies.logger.info("[LENS-PROXY]: Closing server");
|
this.dependencies.logger.info("[LENS-PROXY]: Closing server");
|
||||||
|
|
||||||
return new Promise<void>((resolve) => {
|
return new Promise<void>((resolve) => {
|
||||||
this.proxyServer.close(() => resolve());
|
this.proxyServer.stop(() => resolve());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user