Skip to content

Commit d2c1b56

Browse files
authored
Release 0.43.0
- improve logging and tracing for debugging of the system - address #1374 and #1373 - bug fixes and improvements
2 parents cd9d28f + ef0ff21 commit d2c1b56

File tree

79 files changed

+4582
-4059
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+4582
-4059
lines changed

.github/workflows/check_version_number.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
- name: Checkout repository
1616
uses: actions/checkout@v4
1717

18-
- uses: actions/setup-node@v4.1.0
18+
- uses: actions/setup-node@v4.3.0
1919
with:
2020
node-version: '22'
2121

.github/workflows/create_release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
- name: Checkout repository
1616
uses: actions/checkout@v4
1717

18-
- uses: actions/setup-node@v4.1.0
18+
- uses: actions/setup-node@v4.3.0
1919
with:
2020
node-version: '22'
2121

.github/workflows/eslint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
steps:
1010
- uses: actions/checkout@v4
1111
- name: Use Node.js
12-
uses: actions/setup-node@v4.1.0
12+
uses: actions/setup-node@v4.3.0
1313
with:
1414
node-version: '22'
1515

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
- uses: actions/checkout@v4
1515

1616
- name: Use Node.js
17-
uses: actions/setup-node@v4.1.0
17+
uses: actions/setup-node@v4.3.0
1818
with:
1919
node-version: '22'
2020

backend/package.json

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "kleinkram-backend",
3-
"version": "0.42.0",
3+
"version": "0.43.0",
44
"description": "",
55
"author": "",
66
"private": true,
7-
"license": "UNLICENSED",
7+
"license": "MIT",
88
"scripts": {
99
"build": "nest build",
1010
"format": "prettier --write \\\"src/**/*.ts\\\" \\\"tests/**/*.ts\\\"",
@@ -18,41 +18,43 @@
1818
"typeorm": "typeorm-ts-node-commonjs"
1919
},
2020
"dependencies": {
21-
"@aws-sdk/client-sts": "^3.687.0",
21+
"@aws-sdk/client-sts": "^3.774.0",
2222
"@google-cloud/local-auth": "^3.0.1",
2323
"@nestjs/common": "^10.4.7",
24-
"@nestjs/config": "^3.2.0",
24+
"@nestjs/config": "^4.0.1",
2525
"@nestjs/core": "^10.4.5",
2626
"@nestjs/jwt": "^11.0.0",
2727
"@nestjs/mapped-types": "^2.0.5",
28-
"@nestjs/passport": "^10.0.3",
28+
"@nestjs/passport": "^11.0.5",
2929
"@nestjs/platform-express": "^10.4.1",
3030
"@nestjs/schedule": "^4.1.0",
3131
"@nestjs/swagger": "^8.0.1",
3232
"@nestjs/typeorm": "^10.0.2",
33-
"@opentelemetry/exporter-prometheus": "^0.57.2",
34-
"@opentelemetry/exporter-trace-otlp-http": "^0.57.2",
35-
"@opentelemetry/instrumentation-express": "^0.47.1",
36-
"@opentelemetry/instrumentation-fetch": "^0.57.2",
37-
"@opentelemetry/instrumentation-http": "^0.57.2",
38-
"@opentelemetry/instrumentation-nestjs-core": "^0.44.1",
39-
"@opentelemetry/instrumentation-pg": "^0.51.1",
40-
"@opentelemetry/instrumentation-winston": "^0.44.1",
41-
"@opentelemetry/sdk-node": "^0.57.2",
42-
"@opentelemetry/sdk-trace-base": "^1.27.0",
33+
"@opentelemetry/api": "^1.9.0",
34+
"@opentelemetry/exporter-prometheus": "^0.200.0",
35+
"@opentelemetry/exporter-trace-otlp-http": "^0.200.0",
36+
"@opentelemetry/instrumentation-express": "^0.48.0",
37+
"@opentelemetry/instrumentation-fetch": "^0.200.0",
38+
"@opentelemetry/instrumentation-http": "^0.200.0",
39+
"@opentelemetry/instrumentation-nestjs-core": "^0.45.0",
40+
"@opentelemetry/instrumentation-pg": "^0.52.0",
41+
"@opentelemetry/instrumentation-winston": "^0.45.0",
42+
"@opentelemetry/sdk-node": "^0.200.0",
43+
"@opentelemetry/sdk-trace-base": "^2.0.0",
44+
"@swc/core": "^1.11.11",
4345
"@swc/jest": "^0.2.37",
4446
"@types/multer": "^1.4.11",
4547
"@types/passport-google-oauth20": "^2.0.16",
4648
"@willsoto/nestjs-prometheus": "^6.0.1",
4749
"aws4": "^1.13.2",
48-
"axios": "^1.8.1",
50+
"axios": "^1.8.2",
4951
"bull": "^4.12.2",
5052
"class-transformer": "^0.5.1",
5153
"class-validator": "^0.14.1",
5254
"cookie-parser": "^1.4.6",
5355
"date-fns": "^4.1.0",
5456
"form-data": "^4.0.2",
55-
"googleapis": "^144.0.0",
57+
"googleapis": "^146.0.0",
5658
"jsonwebtoken": "^9.0.2",
5759
"minio": "8.0.2",
5860
"multer": "^1.4.5-lts.1",
@@ -66,26 +68,28 @@
6668
"rxjs": "^7.8.2",
6769
"typeorm": "^0.3.21-dev.e7649d2",
6870
"uuid": "^11.0.5",
71+
"vue": "^3.5.13",
6972
"vue-json-pretty": "^2.4.0",
73+
"webpack": "^5.98.0",
7074
"winston": "^3.17.0",
7175
"winston-loki": "^6.0.7"
7276
},
7377
"devDependencies": {
7478
"@aws-sdk/client-s3": "^3.637.0",
7579
"@jest/globals": "^29.7.0",
76-
"@nestjs/cli": "^10.4.4",
77-
"@nestjs/schematics": "^11.0.1",
80+
"@nestjs/cli": "^11.0.5",
81+
"@nestjs/schematics": "^11.0.2",
7882
"@nestjs/testing": "^10.0.0",
7983
"@types/cookie-parser": "^1.4.7",
8084
"@types/express": "^5.0.0",
8185
"@types/jest": "^29.5.2",
82-
"@types/node": "^22.13.5",
86+
"@types/node": "^22.13.10",
8387
"@types/supertest": "^6.0.0",
84-
"@typescript-eslint/eslint-plugin": "^8.26.0",
88+
"@typescript-eslint/eslint-plugin": "^8.28.0",
8589
"@typescript-eslint/parser": "^8.25.0",
86-
"eslint": "^9.21.0",
90+
"eslint": "^9.22.0",
8791
"eslint-config-prettier": "^10.0.1",
88-
"eslint-plugin-prettier": "^5.0.0",
92+
"eslint-plugin-prettier": "^5.2.4",
8993
"jest": "^29.7.0",
9094
"prettier": "^3.0.0",
9195
"source-map-support": "^0.5.21",
@@ -94,6 +98,6 @@
9498
"ts-loader": "^9.4.3",
9599
"ts-node": "^10.9.1",
96100
"tsconfig-paths": "^4.2.0",
97-
"typescript": "^5.1.3"
101+
"typescript": "5.7.3"
98102
}
99103
}

backend/src/logger.ts

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,40 @@
1-
import winston, { format, transports } from 'winston';
1+
import winston, { transports } from 'winston';
22
import LokiTransport from 'winston-loki';
33
import { Injectable, LoggerService } from '@nestjs/common';
4+
import { TransformableInfo } from 'logform';
5+
import { context, trace } from '@opentelemetry/api';
6+
import { appVersion } from './app-version';
47

58
const messageOnly = winston.format.printf(
6-
// @ts-ignore
7-
({ level, message }: { level: string; message: string }) => {
9+
({ level, message }: TransformableInfo): string => {
810
return `[${level.toUpperCase()}]: ${message}`;
911
},
1012
);
1113

14+
const traceIdFormat = winston.format((info) => {
15+
const currentSpan = trace.getSpan(context.active());
16+
if (currentSpan) {
17+
info['trace_id'] = currentSpan.spanContext().traceId;
18+
}
19+
return info;
20+
});
21+
1222
const logger = winston.createLogger({
1323
level: 'debug',
1424
levels: winston.config.npm.levels,
15-
format: format.json(),
25+
format: winston.format.combine(
26+
traceIdFormat(), // Add trace ID to the log format
27+
winston.format.json(), // Keep the JSON format
28+
),
1629
transports: [
1730
new transports.Console({ format: messageOnly }),
1831
new LokiTransport({
1932
host: 'http://loki:3100',
2033
interval: 5,
2134
labels: {
2235
job: 'backend',
36+
container_id: process.env['HOSTNAME'],
37+
version: appVersion,
2338
},
2439
json: true,
2540
format: winston.format.json(),
@@ -30,27 +45,27 @@ const logger = winston.createLogger({
3045

3146
@Injectable()
3247
export class NestLoggerWrapper implements LoggerService {
33-
log(message: any, ...optionalParameters: any[]) {
48+
log(message: never, ...optionalParameters: never[]): void {
3449
logger.info(message, ...optionalParameters);
3550
}
3651

37-
fatal(message: any, ...optionalParameters: any[]) {
52+
fatal(message: never, ...optionalParameters: never[]): void {
3853
logger.error(message, ...optionalParameters);
3954
}
4055

41-
error(message: any, ...optionalParameters: any[]) {
56+
error(message: never, ...optionalParameters: never[]): void {
4257
logger.error(message, ...optionalParameters);
4358
}
4459

45-
warn(message: any, ...optionalParameters: any[]) {
60+
warn(message: never, ...optionalParameters: never[]): void {
4661
logger.warn(message, ...optionalParameters);
4762
}
4863

49-
debug?(message: any, ...optionalParameters: any[]) {
64+
debug?(message: never, ...optionalParameters: never[]): void {
5065
logger.debug(message, ...optionalParameters);
5166
}
5267

53-
verbose?(message: any, ...optionalParameters: any[]) {
68+
verbose?(message: never, ...optionalParameters: never[]): void {
5469
logger.verbose(message, ...optionalParameters);
5570
}
5671
}

backend/src/routing/filters/global-error-filter.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ export class GlobalErrorFilter implements ExceptionFilter {
2323
response.header('kleinkram-version', appVersion);
2424
response.header('Access-Control-Expose-Headers', 'kleinkram-version');
2525

26+
logger.error(
27+
`GlobalErrorFilter: ${exception.name} on kleinkram-version ${appVersion}`,
28+
);
29+
logger.error(exception);
30+
logger.error(exception.stack);
31+
2632
if (exception instanceof BadRequestException) {
2733
const resp: any = exception.getResponse();
2834

backend/src/services/dbdumper.service.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ export class DBDumper {
4848
} catch (error: any) {
4949
await unlinkAsync(dumpFile);
5050

51-
5251
throw new Error(`Failed to create database dump: ${error.message}`);
5352
}
5453
}

backend/src/services/file.service.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -644,7 +644,6 @@ export class FileService implements OnModuleInit {
644644
});
645645
} catch (error) {
646646
logger.error(
647-
648647
`Error moving file ${uuid} to mission ${missionUUID}: ${error}`,
649648
);
650649
}

backend/src/services/project.service.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ export class ProjectService {
128128
: baseQuery.andWhere(
129129
`project.${key} ILIKE :${index.toString()}`,
130130
{
131-
132131
[index]: `%${searchParameters[key].toString()}%`,
133132
},
134133
);

0 commit comments

Comments
 (0)