Fehler im Log #3

Closed
opened 2026-05-26 08:31:33 +00:00 by bjoernpoettker · 1 comment
Owner

[paperless-backend] 2026-05-26T08:11:51.937890000Z [Nest] 1 - 05/26/2026, 8:11:51 AM LOG [JwtOrApiKeyGuard] [GET /api/label-print-agent/jobs/next?agentId=BUEROVERANEU] JWT failed (Unauthorized), trying API key…
[paperless-backend] 2026-05-26T08:11:51.937978000Z [Nest] 1 - 05/26/2026, 8:11:51 AM LOG [ApiKeyGuard] [GET /api/label-print-agent/jobs/next?agentId=BUEROVERANEU] key source: Authorization: Bearer | headers: ["x-forwarded-for","x-real-ip","x-forwarded-proto","x-forwarded-host","host","x-forwarded-uri","x-original-method","x-forwarded-method","x-original-url","x-forwarded-port","x-forwarded-scheme","connection","authorization"] | key prefix: pm_6a079…
[paperless-backend] 2026-05-26T08:11:51.939476000Z [Nest] 1 - 05/26/2026, 8:11:51 AM LOG [ApiKeyGuard] [GET /api/label-print-agent/events] accepted – key "Drucker-Vera" (id=985f6cd7-81e4-4736-a2e1-9f7d73bb7bd7)
[paperless-backend] 2026-05-26T08:11:51.942040000Z [Nest] 1 - 05/26/2026, 8:11:51 AM LOG [ApiKeyGuard] [GET /api/label-print-agent/jobs/next?agentId=BUEROVERANEU] accepted – key "Drucker-Vera" (id=985f6cd7-81e4-4736-a2e1-9f7d73bb7bd7)
[paperless-backend] 2026-05-26T08:11:51.953027000Z [Nest] 1 - 05/26/2026, 8:11:51 AM ERROR [ExceptionsHandler] Error [ERR_HTTP_HEADERS_SENT]: Cannot remove headers after they are sent to the client
[paperless-backend] 2026-05-26T08:11:51.953153000Z at ServerResponse.removeHeader (node:_http_outgoing:804:11)
[paperless-backend] 2026-05-26T08:11:51.953187000Z at ServerResponse.send (/app/node_modules/express/lib/response.js:203:10)
[paperless-backend] 2026-05-26T08:11:51.953213000Z at ExpressAdapter.reply (/app/node_modules/@nestjs/platform-express/adapters/express-adapter.js:49:29)
[paperless-backend] 2026-05-26T08:11:51.953284000Z at RouterResponseController.apply (/app/node_modules/@nestjs/core/router/router-response-controller.js:15:36)
[paperless-backend] 2026-05-26T08:11:51.953331000Z at /app/node_modules/@nestjs/core/router/router-execution-context.js:176:48
[paperless-backend] 2026-05-26T08:11:51.953358000Z at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[paperless-backend] 2026-05-26T08:11:51.953385000Z at async /app/node_modules/@nestjs/core/router/router-execution-context.js:47:13
[paperless-backend] 2026-05-26T08:11:51.953409000Z at async /app/node_modules/@nestjs/core/router/router-proxy.js:9:17 {
[paperless-backend] 2026-05-26T08:11:51.953432000Z code: 'ERR_HTTP_HEADERS_SENT'
[paperless-backend] 2026-05-26T08:11:51.953453000Z }

[paperless-backend] 2026-05-26T08:11:51.937890000Z [Nest] 1 - 05/26/2026, 8:11:51 AM LOG [JwtOrApiKeyGuard] [GET /api/label-print-agent/jobs/next?agentId=BUEROVERANEU] JWT failed (Unauthorized), trying API key… [paperless-backend] 2026-05-26T08:11:51.937978000Z [Nest] 1 - 05/26/2026, 8:11:51 AM LOG [ApiKeyGuard] [GET /api/label-print-agent/jobs/next?agentId=BUEROVERANEU] key source: Authorization: Bearer | headers: ["x-forwarded-for","x-real-ip","x-forwarded-proto","x-forwarded-host","host","x-forwarded-uri","x-original-method","x-forwarded-method","x-original-url","x-forwarded-port","x-forwarded-scheme","connection","authorization"] | key prefix: pm_6a079… [paperless-backend] 2026-05-26T08:11:51.939476000Z [Nest] 1 - 05/26/2026, 8:11:51 AM LOG [ApiKeyGuard] [GET /api/label-print-agent/events] accepted – key "Drucker-Vera" (id=985f6cd7-81e4-4736-a2e1-9f7d73bb7bd7) [paperless-backend] 2026-05-26T08:11:51.942040000Z [Nest] 1 - 05/26/2026, 8:11:51 AM LOG [ApiKeyGuard] [GET /api/label-print-agent/jobs/next?agentId=BUEROVERANEU] accepted – key "Drucker-Vera" (id=985f6cd7-81e4-4736-a2e1-9f7d73bb7bd7) [paperless-backend] 2026-05-26T08:11:51.953027000Z [Nest] 1 - 05/26/2026, 8:11:51 AM ERROR [ExceptionsHandler] Error [ERR_HTTP_HEADERS_SENT]: Cannot remove headers after they are sent to the client [paperless-backend] 2026-05-26T08:11:51.953153000Z at ServerResponse.removeHeader (node:_http_outgoing:804:11) [paperless-backend] 2026-05-26T08:11:51.953187000Z at ServerResponse.send (/app/node_modules/express/lib/response.js:203:10) [paperless-backend] 2026-05-26T08:11:51.953213000Z at ExpressAdapter.reply (/app/node_modules/@nestjs/platform-express/adapters/express-adapter.js:49:29) [paperless-backend] 2026-05-26T08:11:51.953284000Z at RouterResponseController.apply (/app/node_modules/@nestjs/core/router/router-response-controller.js:15:36) [paperless-backend] 2026-05-26T08:11:51.953331000Z at /app/node_modules/@nestjs/core/router/router-execution-context.js:176:48 [paperless-backend] 2026-05-26T08:11:51.953358000Z at process.processTicksAndRejections (node:internal/process/task_queues:95:5) [paperless-backend] 2026-05-26T08:11:51.953385000Z at async /app/node_modules/@nestjs/core/router/router-execution-context.js:47:13 [paperless-backend] 2026-05-26T08:11:51.953409000Z at async /app/node_modules/@nestjs/core/router/router-proxy.js:9:17 { [paperless-backend] 2026-05-26T08:11:51.953432000Z code: 'ERR_HTTP_HEADERS_SENT' [paperless-backend] 2026-05-26T08:11:51.953453000Z }
Author
Owner

Ursache

In getNextJob (label-print-agent.controller.ts) wurde @Res({ passthrough: true }) verwendet. Im 204-Zweig (kein Job vorhanden) passierte Folgendes:

  1. res.status(204).send() wurde manuell aufgerufen - Express sendet die Antwort
  2. return; lieferte undefined an NestJS zurueck
  3. NestJS RouterResponseController sah den Rueckgabewert und versuchte via ExpressAdapter.reply nochmals res.send() aufzurufen
  4. ERR_HTTP_HEADERS_SENT

Mit passthrough: true ueberwacht NestJS den Rueckgabewert weiterhin - das funktioniert nur korrekt, wenn man entweder manuell antwortet oder einen Wert zurueckgibt, nicht beides gleichzeitig.

Loesung

@Res({ passthrough: true }) auf @Res() (ohne passthrough) geaendert. Ohne passthrough gibt NestJS die vollstaendige Response-Kontrolle an Express ab. Beide Zweige antworten nun explizit mit res.status(204).send() bzw. res.status(200).json({...}).

## Ursache In `getNextJob` (`label-print-agent.controller.ts`) wurde `@Res({ passthrough: true })` verwendet. Im 204-Zweig (kein Job vorhanden) passierte Folgendes: 1. `res.status(204).send()` wurde manuell aufgerufen - Express sendet die Antwort 2. `return;` lieferte `undefined` an NestJS zurueck 3. NestJS RouterResponseController sah den Rueckgabewert und versuchte via `ExpressAdapter.reply` nochmals `res.send()` aufzurufen 4. `ERR_HTTP_HEADERS_SENT` Mit `passthrough: true` ueberwacht NestJS den Rueckgabewert weiterhin - das funktioniert nur korrekt, wenn man entweder manuell antwortet oder einen Wert zurueckgibt, nicht beides gleichzeitig. ## Loesung `@Res({ passthrough: true })` auf `@Res()` (ohne passthrough) geaendert. Ohne passthrough gibt NestJS die vollstaendige Response-Kontrolle an Express ab. Beide Zweige antworten nun explizit mit `res.status(204).send()` bzw. `res.status(200).json({...})`.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bjoernpoettker/paperlessmanager#3