sdk-go
sdk-go copied to clipboard
Interoperability issues due to proto inconsistencies between spec and language-specific SDKs
Hi, we've run into a fairly high severity issue using CloudEvents with Go.go-sdk uses a different Protobuf descriptor from the descriptor defined in the spec and other SDKs.
We're developing on top of Cloudevents in a mixed language ecosystem (primary Java & Go, using Protobuf as our schema and interoperability layer. Producers use the HTTP protocol to a collection, which outputs to the Kafka binding where producers pick up events).
There are a number of interoperability issues we've run into so far, namely due to Go using an inconsistent version of the protobuf definition:
protoc-generated Go cannot import the spec.
- The spec defines the Go import as
cloudevents.io/genproto. This module does not exist.
Since this repository doesn't exist, anything generated from Go doesn't work. This could be solvable via go.mod replace directives except....
Different protobuf packages
- The spec defines the protobuf as
package io.cloudevents.v1; - This repository defines the protobuf as
package pb;
While wire format interoperability is unaffected, this causes protoreflect to not work between languages. For example: embedding a CloudEvents type via google.protobuf.Any or using protojson
Solution
- Create
cloudevents.io/genproto - sdk-go uses the canonical protobuf defined by
cloudevents.io/genproto
Thanks, will take a look.
OK! the correct proto file is here and we need to copy it down.
https://github.com/cloudevents/spec/blob/v1.0.1/spec.proto
@n3wscott: Note that that proto is slightly out of date - it doesn't include batch support (and doesn't have a csharp_namespace option, although that shouldn't affect go). The most up-to-date one is at https://github.com/cloudevents/spec/blob/main/cloudevents/formats/cloudevents.proto - I'm expecting to use that as the basis of the GA version in 1.0.2 assuming the vote passes.
This is more than half a year old - is this repo even maintained anymore?
It is maintained by volunteers. Would you like to contribute @AndreasBergmeier6176 ?