-
Notifications
You must be signed in to change notification settings - Fork 906
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Confusing transport protocols #1764
Comments
This is indeed somewhat confusing, I'd love if an SDK would be compliant to the spec if at least one of OTLP transports is satisfied, but not all of them. I think forcing the implementation of OTLP over gRPC/http2 would be too cumbersome for new SDKs and omitting it would simplify building/packaging, as http2 is not a trivial spec and this complexity is not needed for trivial data transfer. |
OTLP grpc requires HTTP 2 and is a transport that is built on top of it. OTLP http/protobuf works over a regular http transport (including http 1.1).
I am in favour of requiring only one transport to be implemented by the SDK and letting SDKs to decide if they want to implement more than one. However, I wonder if we should make a choice in the spec of which OTLP transport is mandatory and which are optional. This would avoid each SDK having a different default OTLP transport. Can we go with OTLP/HTTP/Protobuf as the required one (and the default) and the rest of the OTLP transports and encodings are optional? |
Based on the discussion in the Specs meeting, we believe that would be good to ask SDKs to support both grpc and http since the translation from internal SpanData to protos can be shared, the code to call the client is minimal. |
in
So as you can see the user can decide what transport he will need. Based on transport we have 3 different version of exporter collector, the base is using json as this is built in either in node.js or browser. |
@obecny Thanks a lot for the feedback. So as the JS SIG implements the three OTLP flavors already, I'd suggest going ahead with @bogdandrutu's suggestion above and ask the rest of the SIGs to support grpc and http/protobuf. |
When looking at the current compliance matrix it shows that at least one of OTLP/gRPC, OTLP/HTTP binary protobuf, OTLP/HTTP json protobuf has to be implemented, but not all of them. The change was done in: #1359 so quite a while ago. Can we leave it as is? My personal opinion is that gRPC should not be made mandatory anywhere for OTLP. I'm fine with the current state. |
Doesn't the current state allow for only supporting gRPC (meets the at least one of requirement), which would effectively make it mandatory in that SDK? I agree with your statement that gRPC should not be mandatory anywhere, but it seems the current state allows that to happen. |
Yeah, although as I understand, it would be the decision of SDK authors to support it or not, and compliance can be achieved by just having OTLP/HTTP binary protobuf. |
The spec currently says:
That is all that is said about this. Is this list exhaustive? MUST every SDK support them all? What exactly do they mean? E.g. what is the difference between gRPC and http/protobuf when gRPC already sends protobuf encoded data over HTTP.
The text was updated successfully, but these errors were encountered: