tendermint/abci

types.proto missing import

mdyring opened this issue ยท 8 comments

The import github.com/gogo/protobuf/gogoproto/gogo.proto doesn't exist which causes protoc to complain.

In addition some concerns from Matrix chat that would be nice to address:

srmo: Could someone elaborate ob the new gogo types in the abci protobuf types definition? It became pretty difficult to port this to non go languages. Are those new types required? What happens if we leave them out? What are you using them for?

mdyring: We should probably open an issue for it, I haven't tested yet on C++.. But are you seeing build errors?

srmo: @mdyring i had to do crazy workarounds to generate the class files in java which worked but i had no idea why. Someone opened a PR with the gogoproto stuff removed, which has no side effects in simple test cases but this isnโ€™t really providing confidence. A issue seems the way to go.

We ran into this issue meanwhile trying to upgrade the Python ABCI project, and so far I have not found a straightforward solution.

The CockroachDB project had a similar issue and seemingly resolved it by making gogo-free proto files.

In another related issue, on the Prometheus project, performance is given as a key reason:

With the state of things, not using gogoproto is simply not an option from a performance and code sanity perspective.

it is suggested to remove the language specific annotations:

The only reasonable answer right now is to copy the file, strip all annotations and potentially replace them with annotations for the language of your choice. It's an awful user experience. But that's for the protobuf/grpc community to figure out.

srmo commented

thanks @sbellem for the links to similar issues. I'll look into the last two points. We have the same problem with the java port.

thanks @sbellem for the links to similar issues. I'll look into the last two points. We have the same problem with the java port.

Thanks to you too! I saw the issue on jabci and it was useful, as it at least confirmed I was not alone! :)

srmo commented

:) yep, that's always a good feeling

FYI this maybe of some use. https://github.com/tendermint/abci/tree/master/types/protoreplace This I understand predates gogo/profobuffer. Perhaps need to just trawl proto file history to find a working file.

Yikes! Sorry we seemed to have missed this earlier.

Did anyone not manage to get it figured out? Seems a few projects have just copied and stripped the annotations, but obviously that's not sustainable.

We'll look into this. Perhaps we can just get rid of gogo; since anyone looking for performance in Go can just compile the app in with Tendermint, we shouldn't have the same performance requirement there as eg. Prometheus.

Sorry for all the trouble.

Closing for #256