Hi all,

I would like to kick off a discussion about what we should do for protobuf
2.4.1 and figure out what is the long term plan.

Currently, Pulsar is using a customized version of protobuf 2.4.1 for wire
protocol. The customization was made to leverage netty object pooling to
reduce object generation and cause bad JVM GC behavior. However, protobuf
2.4.1 is a many-years old release and there is also a vulnerability issue
reported for protobuf-java 2.4.1 (
https://nvd.nist.gov/vuln/detail/CVE-2015-5237). We need to figure out a
plan to upgrade this dependency.

Here are some thoughts. Happy to see what others think.

a) We upgrade to protobuf 3.x without customization.

- Pros: be able to catch up with changes in protobuf and avoid any
vulnerabilities.
- Cons: we might have to suffer the pains from object generations. But it
might not be too bad since we don't store the message payloads in protobuf.

b) We upgrade to protobuf 3.x with new customization.

- Pros: We are able to control object generations.
- Cons: Maintaining a customization makes harder to catch up changes in
protobuf community and avoid vulnerabilities.

c) Look for other alternatives to protobuf such as flatbuffers.

- Cons: it is not a backward-compatible solution with existing Pulsar
clients.

- Sijie

Reply via email to