Skip to content

Bug: Failure while trying to convert JSON to protobuf with Schemaverse #1387

Open
@yanivbh1

Description

@yanivbh1

Describe the bug

Hey,
I have the following events coming in through API calls in JSON

{
  items: [ { name: 'burger', quantity: 100 } ],
  email: '[email protected]',
  total: 5000
}

and this is the code that should produce them into a station:

const { memphis } = require('memphis-dev');
const { logger } = require('./loggerService')
const MEMPHIS_HOST = process.env.MEMPHIS_HOST;
const MEMPHIS_USERNAME = process.env.MEMPHIS_USERNAME;
const MEMPHIS_PASSWORD = process.env.MEMPHIS_PASSWORD;
const MEMPHIS_ACCOUNTID = process.env.MEMPHIS_ACCOUNTID;
let orders_service_producer = null;

const memphisConnect = async () => {
    try {
        logger.info(`Memphis - trying to connect`)
        await memphis.connect({
            host: MEMPHIS_HOST,
            username: MEMPHIS_USERNAME,
            password: MEMPHIS_PASSWORD,
            accountId: MEMPHIS_ACCOUNTID
        });
        logger.info(`Memphis - connection established`)

        orders_service_producer = await memphis.producer({
            stationName: "orders",
            producerName: "orders_service",
        });
        logger.info(`orders_service producer created`)
    } catch(ex) {
        logger.log('fatal',`Memphis - ${ex}`);
        memphis.close();
        process.exit();
    }
}

Without an enforced schema, everything works well, but when I enforce a schema, I get the following error:

03-11-2023 10:42:02 AM - info: POST /api/orders 201 89 ::1 - 17.368 ms

node:internal/process/promises:289
            triggerUncaughtException(err, true /* fromPromise */);
            ^

Error: Schema validation has failed: Invalid message format, expecting protobuf
    at Producer._validateProtobufMessage (/private/tmp/onboarding-app/order-service/node_modules/memphis-dev/lib/producer.js:183:57)
    at Producer._validateMessage (/private/tmp/onboarding-app/order-service/node_modules/memphis-dev/lib/producer.js:243:33)
    at Producer.produce (/private/tmp/onboarding-app/order-service/node_modules/memphis-dev/lib/producer.js:44:38)
    at Object.publishOrderToStation (/private/tmp/onboarding-app/order-service/src/services/mqService.js:37:29)
    at placeOrder (/private/tmp/onboarding-app/order-service/src/controllers/orderController.js:19:25)
    at Layer.handle [as handle_request] (/private/tmp/onboarding-app/order-service/node_modules/express/lib/router/layer.js:95:5)
    at next (/private/tmp/onboarding-app/order-service/node_modules/express/lib/router/route.js:144:13)
    at Route.dispatch (/private/tmp/onboarding-app/order-service/node_modules/express/lib/router/route.js:114:3)
    at Layer.handle [as handle_request] (/private/tmp/onboarding-app/order-service/node_modules/express/lib/router/layer.js:95:5)
    at /private/tmp/onboarding-app/order-service/node_modules/express/lib/router/index.js:284:15

Node.js v19.4.0

Steps to reproduce

Written above

Affected services

Broker, Data, SDKs

Broker version

1.3.0-latest

Platforms

No response

If UI - Browsers

No response

Environment

No response

Additional context

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions