🐛Fixed problem with zero size heapdump when running inside docker
⬆️Upgraded node-types to the current version on nodejs
This commit is contained in:
committed by
Anton Shepilov
parent
20d128d990
commit
b985f0357e
Generated
+8
-8
@@ -103,7 +103,7 @@
|
|||||||
"@types/html-to-text": "^8.1.1",
|
"@types/html-to-text": "^8.1.1",
|
||||||
"@types/jest": "^29.5.12",
|
"@types/jest": "^29.5.12",
|
||||||
"@types/lodash": "^4.14.165",
|
"@types/lodash": "^4.14.165",
|
||||||
"@types/node": "^18.11",
|
"@types/node": "^20.17.16",
|
||||||
"@types/node-cron": "^3.0.0",
|
"@types/node-cron": "^3.0.0",
|
||||||
"@types/node-fetch": "^2.5.12",
|
"@types/node-fetch": "^2.5.12",
|
||||||
"@types/node-uuid": "^0.0.28",
|
"@types/node-uuid": "^0.0.28",
|
||||||
@@ -2821,11 +2821,11 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.19.31",
|
"version": "20.17.16",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.31.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.16.tgz",
|
||||||
"integrity": "sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==",
|
"integrity": "sha512-vOTpLduLkZXePLxHiHsBLp98mHGnl8RptV4YAO3HfKO5UHjDvySGbxKtpYfy8Sx5+WKcgc45qNreJJRVM3L6mw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~5.26.4"
|
"undici-types": "~6.19.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node-cron": {
|
"node_modules/@types/node-cron": {
|
||||||
@@ -12492,9 +12492,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/undici-types": {
|
"node_modules/undici-types": {
|
||||||
"version": "5.26.5",
|
"version": "6.19.8",
|
||||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
|
||||||
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
|
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="
|
||||||
},
|
},
|
||||||
"node_modules/universalify": {
|
"node_modules/universalify": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
"lint": "eslint . --ext .ts --quiet --fix",
|
"lint": "eslint . --ext .ts --quiet --fix",
|
||||||
"lint:no-fix": "eslint . --ext .ts",
|
"lint:no-fix": "eslint . --ext .ts",
|
||||||
"lint:prettier": "prettier --check --config .prettierrc 'src/**/*.ts'",
|
"lint:prettier": "prettier --check --config .prettierrc 'src/**/*.ts'",
|
||||||
"serve": "node --unhandled-rejections=warn --max-http-header-size=30000 dist/server.js",
|
"serve": "node --unhandled-rejections=warn --max-http-header-size=30000 --expose-gc dist/server.js",
|
||||||
"serve:watch": "nodemon dist/server.js | pino-pretty",
|
"serve:watch": "nodemon dist/server.js | pino-pretty",
|
||||||
"serve:debug": "nodemon --inspect dist/server.js | pino-pretty",
|
"serve:debug": "nodemon --inspect dist/server.js | pino-pretty",
|
||||||
"start": "npm run serve",
|
"start": "npm run serve",
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
"@types/html-to-text": "^8.1.1",
|
"@types/html-to-text": "^8.1.1",
|
||||||
"@types/jest": "^29.5.12",
|
"@types/jest": "^29.5.12",
|
||||||
"@types/lodash": "^4.14.165",
|
"@types/lodash": "^4.14.165",
|
||||||
"@types/node": "^18.11",
|
"@types/node": "^20.17.16",
|
||||||
"@types/node-cron": "^3.0.0",
|
"@types/node-cron": "^3.0.0",
|
||||||
"@types/node-fetch": "^2.5.12",
|
"@types/node-fetch": "^2.5.12",
|
||||||
"@types/node-uuid": "^0.0.28",
|
"@types/node-uuid": "^0.0.28",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { logger } from "../../framework";
|
import { logger } from "../../framework";
|
||||||
import { Readable, Transform } from "node:stream";
|
import { Readable, Transform } from "node:stream";
|
||||||
import { Session } from "node:inspector";
|
import { Session } from "node:inspector/promises";
|
||||||
|
|
||||||
/** Time the execution of the callback, and return its duration in ms with the result */
|
/** Time the execution of the callback, and return its duration in ms with the result */
|
||||||
export async function timeCallback<T>(
|
export async function timeCallback<T>(
|
||||||
@@ -15,7 +15,7 @@ export async function timeCallback<T>(
|
|||||||
* synchroneously (because of session.post) pipe it to a stream
|
* synchroneously (because of session.post) pipe it to a stream
|
||||||
* readable from the first argument of the callback.
|
* readable from the first argument of the callback.
|
||||||
*/
|
*/
|
||||||
export function getHeapSnapshotSync(cb: (readable: Readable) => void) {
|
export async function getHeapSnapshotSync(cb: (readable: Readable) => void) {
|
||||||
logger.info({ gcExposed: !!global.gc }, "Beginning heap snapshot");
|
logger.info({ gcExposed: !!global.gc }, "Beginning heap snapshot");
|
||||||
if (global.gc) global.gc();
|
if (global.gc) global.gc();
|
||||||
const session = new Session();
|
const session = new Session();
|
||||||
@@ -24,12 +24,13 @@ export function getHeapSnapshotSync(cb: (readable: Readable) => void) {
|
|||||||
const transform = new Transform();
|
const transform = new Transform();
|
||||||
try {
|
try {
|
||||||
let size = 0;
|
let size = 0;
|
||||||
|
await session.post("HeapProfiler.enable");
|
||||||
session.on("HeapProfiler.addHeapSnapshotChunk", message => {
|
session.on("HeapProfiler.addHeapSnapshotChunk", message => {
|
||||||
size += message.params.chunk.length;
|
size += message.params.chunk.length;
|
||||||
transform.push(message.params.chunk);
|
transform.push(message.params.chunk);
|
||||||
});
|
});
|
||||||
cb(transform);
|
cb(transform);
|
||||||
session.post("HeapProfiler.takeHeapSnapshot", null);
|
await session.post("HeapProfiler.takeHeapSnapshot", null);
|
||||||
logger.info({ size }, "Heap snapshot sent");
|
logger.info({ size }, "Heap snapshot sent");
|
||||||
} finally {
|
} finally {
|
||||||
transform.end();
|
transform.end();
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ const routes: FastifyPluginCallback = (fastify: FastifyInstance, _opts, next) =>
|
|||||||
`attachment; filename="twake-drive-snap-${filenameTimestamp}.heapsnapshot"`,
|
`attachment; filename="twake-drive-snap-${filenameTimestamp}.heapsnapshot"`,
|
||||||
);
|
);
|
||||||
let replyResult;
|
let replyResult;
|
||||||
getHeapSnapshotSync(readable => (replyResult = reply.send(readable)));
|
await getHeapSnapshotSync(readable => (replyResult = reply.send(readable)));
|
||||||
return replyResult;
|
return replyResult;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ export class PreviewProcessor
|
|||||||
|
|
||||||
readable.pipe(writable);
|
readable.pipe(writable);
|
||||||
|
|
||||||
await new Promise(r => {
|
await new Promise<void>(r => {
|
||||||
writable.on("finish", r);
|
writable.on("finish", r);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ export const writeToTemporaryFile = async (input: Readable, extension: string):
|
|||||||
|
|
||||||
input.pipe(writable);
|
input.pipe(writable);
|
||||||
|
|
||||||
await new Promise(r => {
|
await new Promise<void>(r => {
|
||||||
writable.on("finish", r);
|
writable.on("finish", r);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
POST http://localhost:4000/diagnostics/heap?secret=diag-secret
|
||||||
|
Authorization: Basic admin admin
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -493,6 +493,11 @@
|
|||||||
rfdc "^1.3.0"
|
rfdc "^1.3.0"
|
||||||
yaml "^2.2.2"
|
yaml "^2.2.2"
|
||||||
|
|
||||||
|
"@ffprobe-installer/darwin-arm64@5.0.1":
|
||||||
|
version "5.0.1"
|
||||||
|
resolved "https://registry.npmjs.org/@ffprobe-installer/darwin-arm64/-/darwin-arm64-5.0.1.tgz"
|
||||||
|
integrity sha512-vwNCNjokH8hfkbl6m95zICHwkSzhEvDC3GVBcUp5HX8+4wsX10SP3B+bGur7XUzTIZ4cQpgJmEIAx6TUwRepMg==
|
||||||
|
|
||||||
"@ffprobe-installer/ffprobe@^1.4.1":
|
"@ffprobe-installer/ffprobe@^1.4.1":
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.npmjs.org/@ffprobe-installer/ffprobe/-/ffprobe-1.4.1.tgz"
|
resolved "https://registry.npmjs.org/@ffprobe-installer/ffprobe/-/ffprobe-1.4.1.tgz"
|
||||||
@@ -507,11 +512,6 @@
|
|||||||
"@ffprobe-installer/win32-ia32" "5.0.0"
|
"@ffprobe-installer/win32-ia32" "5.0.0"
|
||||||
"@ffprobe-installer/win32-x64" "5.0.0"
|
"@ffprobe-installer/win32-x64" "5.0.0"
|
||||||
|
|
||||||
"@ffprobe-installer/linux-x64@5.0.0":
|
|
||||||
version "5.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/@ffprobe-installer/linux-x64/-/linux-x64-5.0.0.tgz"
|
|
||||||
integrity sha512-zgLnWJFvMGCaw1txGtz84sMEQt6mQUzdw86ih9S/kZOWnp06Gj/ams/EXxEkAxgAACCVM6/O0mkDe/6biY5tgA==
|
|
||||||
|
|
||||||
"@humanwhocodes/config-array@^0.11.14":
|
"@humanwhocodes/config-array@^0.11.14":
|
||||||
version "0.11.14"
|
version "0.11.14"
|
||||||
resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz"
|
resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz"
|
||||||
@@ -531,29 +531,17 @@
|
|||||||
resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz"
|
resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz"
|
||||||
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
|
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
|
||||||
|
|
||||||
"@img/sharp-libvips-linux-x64@1.0.2":
|
"@img/sharp-darwin-arm64@0.33.3":
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz"
|
|
||||||
integrity sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==
|
|
||||||
|
|
||||||
"@img/sharp-libvips-linuxmusl-x64@1.0.2":
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz"
|
|
||||||
integrity sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==
|
|
||||||
|
|
||||||
"@img/sharp-linux-x64@0.33.3":
|
|
||||||
version "0.33.3"
|
version "0.33.3"
|
||||||
resolved "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.3.tgz"
|
resolved "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.3.tgz"
|
||||||
integrity sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==
|
integrity sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
"@img/sharp-libvips-linux-x64" "1.0.2"
|
"@img/sharp-libvips-darwin-arm64" "1.0.2"
|
||||||
|
|
||||||
"@img/sharp-linuxmusl-x64@0.33.3":
|
"@img/sharp-libvips-darwin-arm64@1.0.2":
|
||||||
version "0.33.3"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.3.tgz"
|
resolved "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz"
|
||||||
integrity sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==
|
integrity sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==
|
||||||
optionalDependencies:
|
|
||||||
"@img/sharp-libvips-linuxmusl-x64" "1.0.2"
|
|
||||||
|
|
||||||
"@isaacs/cliui@^8.0.2":
|
"@isaacs/cliui@^8.0.2":
|
||||||
version "8.0.2"
|
version "8.0.2"
|
||||||
@@ -1366,12 +1354,12 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/node@*", "@types/node@^18.11", "@types/node@>=10.0.0":
|
"@types/node@*", "@types/node@^20.17.16", "@types/node@>=10.0.0":
|
||||||
version "18.19.31"
|
version "20.17.16"
|
||||||
resolved "https://registry.npmjs.org/@types/node/-/node-18.19.31.tgz"
|
resolved "https://registry.npmjs.org/@types/node/-/node-20.17.16.tgz"
|
||||||
integrity sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==
|
integrity sha512-vOTpLduLkZXePLxHiHsBLp98mHGnl8RptV4YAO3HfKO5UHjDvySGbxKtpYfy8Sx5+WKcgc45qNreJJRVM3L6mw==
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types "~5.26.4"
|
undici-types "~6.19.2"
|
||||||
|
|
||||||
"@types/node@^15.0.1":
|
"@types/node@^15.0.1":
|
||||||
version "15.14.9"
|
version "15.14.9"
|
||||||
@@ -3605,6 +3593,11 @@ fs.realpath@^1.0.0:
|
|||||||
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
|
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
|
||||||
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
||||||
|
|
||||||
|
fsevents@^2.3.2, fsevents@~2.3.2:
|
||||||
|
version "2.3.3"
|
||||||
|
resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
|
||||||
|
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
|
||||||
|
|
||||||
fstream@^1.0.12:
|
fstream@^1.0.12:
|
||||||
version "1.0.12"
|
version "1.0.12"
|
||||||
resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz"
|
resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz"
|
||||||
@@ -7345,10 +7338,10 @@ undefsafe@^2.0.5:
|
|||||||
resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz"
|
resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz"
|
||||||
integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==
|
integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==
|
||||||
|
|
||||||
undici-types@~5.26.4:
|
undici-types@~6.19.2:
|
||||||
version "5.26.5"
|
version "6.19.8"
|
||||||
resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz"
|
resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz"
|
||||||
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
|
integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
|
||||||
|
|
||||||
universalify@^2.0.0:
|
universalify@^2.0.0:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
|
|||||||
@@ -6,11 +6,10 @@ services:
|
|||||||
image: mongo
|
image: mongo
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
|
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
|
||||||
interval: 2m
|
interval: 10s
|
||||||
timeout: 2m
|
timeout: 2m
|
||||||
retries: 30
|
retries: 30
|
||||||
start_period: 10s
|
start_period: 10s
|
||||||
start_interval: 3s
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./docker-data/mongo:/data/db
|
- ./docker-data/mongo:/data/db
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
Reference in New Issue
Block a user