Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exceptions thrown from Kafka microservice are not sent #9679

Closed
2 of 15 tasks
svyatogor opened this issue May 27, 2022 · 1 comment
Closed
2 of 15 tasks

Exceptions thrown from Kafka microservice are not sent #9679

svyatogor opened this issue May 27, 2022 · 1 comment
Labels
needs triage This issue has not been looked into

Comments

@svyatogor
Copy link

Is there an existing issue for this?

  • I have searched the existing issues

Current behavior

When you throw an exception from Kafka based micro service message handler it seems that it is supposed to be places in kafka_nest-err message header by assignErrorHeader. However BaseRpcExceptionFilter returns an object that cannot be fed into Buffer.from so we get an error and the exception is never delivered.

outgoingMessage.headers[KafkaHeaders.NEST_ERR] = Buffer.from(

Error: Ouch!
    at ServerController.getHello (/Users/sergeykuleshov/Projects/nest-ms-kafka-ex/dist/apps/server/main.js:76:15)
    at /Users/sergeykuleshov/Projects/nest-ms-kafka-ex/node_modules/@nestjs/microservices/context/rpc-context-creator.js:44:33
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at /Users/sergeykuleshov/Projects/nest-ms-kafka-ex/node_modules/@nestjs/microservices/context/rpc-proxy.js:11:32
    at ServerKafka.handleMessage (/Users/sergeykuleshov/Projects/nest-ms-kafka-ex/node_modules/@nestjs/microservices/server/server-kafka.js:112:54)
    at Runner.processEachMessage (/Users/sergeykuleshov/Projects/nest-ms-kafka-ex/node_modules/kafkajs/src/consumer/runner.js:191:9)
    at onBatch (/Users/sergeykuleshov/Projects/nest-ms-kafka-ex/node_modules/kafkajs/src/consumer/runner.js:393:9)
    at /Users/sergeykuleshov/Projects/nest-ms-kafka-ex/node_modules/kafkajs/src/consumer/runner.js:409:9
    at /Users/sergeykuleshov/Projects/nest-ms-kafka-ex/node_modules/kafkajs/src/consumer/worker.js:29:9
TypeError: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received an instance of Object
    at new NodeError (node:internal/errors:371:5)
    at Function.from (node:buffer:322:9)
    at ServerKafka.assignErrorHeader (/Users/sergeykuleshov/Projects/nest-ms-kafka-ex/node_modules/@nestjs/microservices/server/server-kafka.js:137:73)
    at ServerKafka.sendMessage (/Users/sergeykuleshov/Projects/nest-ms-kafka-ex/node_modules/@nestjs/microservices/server/server-kafka.js:119:14)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at /Users/sergeykuleshov/Projects/nest-ms-kafka-ex/node_modules/@nestjs/microservices/server/server.js:47:25

Minimum reproduction code

https://github.com/svyatogor/nest-ms-kafka-ex

Steps to reproduce

  1. nest start server
  2. nest start client
  3. visi http://localhost:3000 to trigger the micro service call

Expected behavior

The message should be serialised before being set onto the header.

Package

  • I don't know. Or some 3rd-party package
  • @nestjs/common
  • @nestjs/core
  • @nestjs/microservices
  • @nestjs/platform-express
  • @nestjs/platform-fastify
  • @nestjs/platform-socket.io
  • @nestjs/platform-ws
  • @nestjs/testing
  • @nestjs/websockets
  • Other (see below)

Other package

No response

NestJS version

8.4.5

Packages versions

 "@nestjs/common": "^8.0.0",
"@nestjs/core": "^8.0.0",
"@nestjs/microservices": "^8.4.5",
"@nestjs/platform-express": "^8.0.0",
"kafkajs": "^2.0.1",
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
"rxjs": "^7.2.0"

Node.js version

16.14

In which operating systems have you tested?

  • macOS
  • Windows
  • Linux

Other

No response

@svyatogor svyatogor added the needs triage This issue has not been looked into label May 27, 2022
@kamilmysliwiec
Copy link
Member

This has been fixed in this PR #9586 and will be published as part of v9.0.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs triage This issue has not been looked into
Projects
None yet
Development

No branches or pull requests

2 participants