Vector: [Pulsar Sink] why the pulsar sink has a consumer healthcheck?

Created on 28 Apr 2020  路  16Comments  路  Source: timberio/vector

Hi,

On pulsar sink, why the producer is not considered as a valid healthcheck?

My question is about security issues, vector should not be able to consume as a sink IMO. More, it creates a not necessary connection, right?

WDYT?

should pulsar bug

Most helpful comment

A shot in the dark here because I don't really follow the above thread, I think I see where a problem could be, we should move this line: https://github.com/timberio/vector/blob/master/src/sinks/pulsar.rs#L171 into a futures::lazy or something similar so that it doesn't run build inside that method.

All 16 comments

I think the pulsar binary protocol have its healthcheck system. Will check it.

Ok http://pulsar.apache.org/docs/en/develop-binary-protocol/#keep-alive,

PulsarDecoder#handlePing  PulsarDecoder#handlePong

Will open issue on pulsar-rs to use it and use it in vector.

Because currently the healthcheck consumer can be on different broker that the producer used.

Thanks @KannarFr, in the interim, you can disable the health check with healthcheck = false

The healthcheck = false has a strange behavior, by my side, on the pulsar sink the consumer healthcheck is created then stopped, right?

How can just not initiate the healthcheck? Can I?

@binarylogic^?

The healthcheck = false has a strange behavior, by my side, on the pulsar sink the consumer healthcheck is created then stopped, right?

I'm not sure what you mean? Setting healthcheck = false causes a problem?

With healthcheck = false configured on the pulsar sink. I get the following error:

Apr 29 16:35:56 db6035d1-1258-4425-b22c-2df69ff7e1a3 vector[2136]: Apr 29 16:35:56.303 ERROR vector::topology: Configuration error: Sink "pulsar_output": consumer error: Connection error: CommandError { request_id: 0, error: AuthorizationError, message: "Client is not authorized to subscribe" }

The auth token has not the right to consume, but with healthcheck false it must not tries, right?

I think the consumer is created even if the healthcheck is not ran. Possible?

@binarylogic ^

@leshow you built this sink. Maybe you understand better what is happening here? Healthchecks should be optional, so I'm curious if it's doing more than it should?

A shot in the dark here because I don't really follow the above thread, I think I see where a problem could be, we should move this line: https://github.com/timberio/vector/blob/master/src/sinks/pulsar.rs#L171 into a futures::lazy or something similar so that it doesn't run build inside that method.

Thanks for chiming in. Would you mind doing that? Otherwise, we'll have someone do it next week-ish.

I could make a PR to make this change if you'd like?

edit: just saw you commented, no problem!

Thanks to both of you.

does the kafka sink have the same problem? https://github.com/timberio/vector/blob/master/src/sinks/kafka.rs#L212

It calls create in it's healthcheck method also.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

leebenson picture leebenson  路  3Comments

jamtur01 picture jamtur01  路  3Comments

a-rodin picture a-rodin  路  3Comments

raghu999 picture raghu999  路  3Comments

valyala picture valyala  路  3Comments