-
Notifications
You must be signed in to change notification settings - Fork 93
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
Support HTTP Traceparent header field reading in Go 1.24 #1318
Comments
I also realized that maybe we simply need to figure out how to work with the swiss maps. To support manual spans we also read a Go map in |
We need to fully audit the existing probes to determine where we instrument using maps. We should see if we can find short-term fixes for all these locations if we cannot get support for swiss maps working before their release. |
@grcevski plans to contribute the code from Beyla they used to get a stop-gap solution working for HTTP |
@MrAlias OTel global needs to be documented that it will not work with newer version of Go (if using the old versions of |
Doing a quick search for
For completeness, it looks like the kafka header is read from a slice: Lines 90 to 92 in d5869d5
|
Plan for OTel global instrumentation support:
|
Swiss maps have been enabled by default in Go main, which means they will probably become the default in Go 1.24 and break the reading of the HTTP request maps. gRPC is not affected, since we read an array there.
https://go-review.googlesource.com/c/go/+/574516
Go 1.24 is scheduled for release in February (2nd week), we need a fix by then: https://docs.google.com/presentation/d/1jvc0RzrshOOjkeEnsyea2jwjs_zVOcyETG558pqPOK0/mobilepresent?slide=id.g840eaeb4b4_0_0
One possible fix for this is to write a version of the map lookup code which is meant for Swiss maps. Based on some quick code reading I did, this looks more complex now than it used to be.
Another possible solution we discussed at the Go Auto SIG today is potentially reading the Traceparent field while the headers are being parsed, although this will be slower since we will run a uprobe on every header field. The advantage of this approach is that this works for all Go versions.
The text was updated successfully, but these errors were encountered: