Skip to content

Commit bd494c3

Browse files
committed
Replace net/http Request.pat.str with Request.Pattern
Request.pat.str was made public via Request.Pattern in go1.23 (golang/go@a523152)
1 parent f023c65 commit bd494c3

File tree

7 files changed

+122
-33
lines changed

7 files changed

+122
-33
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ OpenTelemetry Go Automatic Instrumentation adheres to [Semantic Versioning](http
2929
### Changed
3030

3131
- Upgrade OpenTelemetry semantic conventions to `v1.30.0`. ([#2032](https://github.com/open-telemetry/opentelemetry-go-instrumentation/pull/2032))
32+
- Modify how the pattern is fetch from `net/http.Request`. Now it uses `Request.Pattern` instead of `Request.pat.str` ([#2090](https://github.com/open-telemetry/opentelemetry-go-instrumentation/pull/2090))
3233

3334
### Removed
3435

internal/pkg/inject/offset_results.json

Lines changed: 111 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1904,7 +1904,8 @@
19041904
"1.71.0-dev",
19051905
"1.71.0",
19061906
"1.71.1",
1907-
"1.72.0-dev"
1907+
"1.72.0-dev",
1908+
"1.73.0-dev"
19081909
]
19091910
}
19101911
]
@@ -2127,7 +2128,8 @@
21272128
"1.71.0-dev",
21282129
"1.71.0",
21292130
"1.71.1",
2130-
"1.72.0-dev"
2131+
"1.72.0-dev",
2132+
"1.73.0-dev"
21312133
]
21322134
}
21332135
]
@@ -2355,7 +2357,8 @@
23552357
"1.71.0-dev",
23562358
"1.71.0",
23572359
"1.71.1",
2358-
"1.72.0-dev"
2360+
"1.72.0-dev",
2361+
"1.73.0-dev"
23592362
]
23602363
}
23612364
]
@@ -2583,7 +2586,8 @@
25832586
"1.71.0-dev",
25842587
"1.71.0",
25852588
"1.71.1",
2586-
"1.72.0-dev"
2589+
"1.72.0-dev",
2590+
"1.73.0-dev"
25872591
]
25882592
}
25892593
]
@@ -2806,7 +2810,8 @@
28062810
"1.71.0-dev",
28072811
"1.71.0",
28082812
"1.71.1",
2809-
"1.72.0-dev"
2813+
"1.72.0-dev",
2814+
"1.73.0-dev"
28102815
]
28112816
}
28122817
]
@@ -3034,7 +3039,8 @@
30343039
"1.71.0-dev",
30353040
"1.71.0",
30363041
"1.71.1",
3037-
"1.72.0-dev"
3042+
"1.72.0-dev",
3043+
"1.73.0-dev"
30383044
]
30393045
}
30403046
]
@@ -3100,7 +3106,8 @@
31003106
"1.71.0-dev",
31013107
"1.71.0",
31023108
"1.71.1",
3103-
"1.72.0-dev"
3109+
"1.72.0-dev",
3110+
"1.73.0-dev"
31043111
]
31053112
},
31063113
{
@@ -3490,7 +3497,8 @@
34903497
"1.71.0-dev",
34913498
"1.71.0",
34923499
"1.71.1",
3493-
"1.72.0-dev"
3500+
"1.72.0-dev",
3501+
"1.73.0-dev"
34943502
]
34953503
}
34963504
]
@@ -3551,7 +3559,8 @@
35513559
"1.71.0-dev",
35523560
"1.71.0",
35533561
"1.71.1",
3554-
"1.72.0-dev"
3562+
"1.72.0-dev",
3563+
"1.73.0-dev"
35553564
]
35563565
},
35573566
{
@@ -3951,7 +3960,8 @@
39513960
"1.71.0-dev",
39523961
"1.71.0",
39533962
"1.71.1",
3954-
"1.72.0-dev"
3963+
"1.72.0-dev",
3964+
"1.73.0-dev"
39553965
]
39563966
}
39573967
]
@@ -4169,7 +4179,8 @@
41694179
"1.71.0-dev",
41704180
"1.71.0",
41714181
"1.71.1",
4172-
"1.72.0-dev"
4182+
"1.72.0-dev",
4183+
"1.73.0-dev"
41734184
]
41744185
}
41754186
]
@@ -4422,7 +4433,8 @@
44224433
"1.71.0-dev",
44234434
"1.71.0",
44244435
"1.71.1",
4425-
"1.72.0-dev"
4436+
"1.72.0-dev",
4437+
"1.73.0-dev"
44264438
]
44274439
}
44284440
]
@@ -4645,7 +4657,8 @@
46454657
"1.71.0-dev",
46464658
"1.71.0",
46474659
"1.71.1",
4648-
"1.72.0-dev"
4660+
"1.72.0-dev",
4661+
"1.73.0-dev"
46494662
]
46504663
}
46514664
]
@@ -4873,7 +4886,8 @@
48734886
"1.71.0-dev",
48744887
"1.71.0",
48754888
"1.71.1",
4876-
"1.72.0-dev"
4889+
"1.72.0-dev",
4890+
"1.73.0-dev"
48774891
]
48784892
}
48794893
]
@@ -5459,6 +5473,89 @@
54595473
}
54605474
]
54615475
},
5476+
{
5477+
"field": "Pattern",
5478+
"offsets": [
5479+
{
5480+
"offset": null,
5481+
"versions": [
5482+
"1.19.0",
5483+
"1.19.1",
5484+
"1.19.2",
5485+
"1.19.3",
5486+
"1.19.4",
5487+
"1.19.5",
5488+
"1.19.6",
5489+
"1.19.7",
5490+
"1.19.8",
5491+
"1.19.9",
5492+
"1.19.10",
5493+
"1.19.11",
5494+
"1.19.12",
5495+
"1.19.13",
5496+
"1.20.0",
5497+
"1.20.1",
5498+
"1.20.2",
5499+
"1.20.3",
5500+
"1.20.4",
5501+
"1.20.5",
5502+
"1.20.6",
5503+
"1.20.7",
5504+
"1.20.8",
5505+
"1.20.9",
5506+
"1.20.10",
5507+
"1.20.11",
5508+
"1.20.12",
5509+
"1.20.13",
5510+
"1.20.14",
5511+
"1.21.0",
5512+
"1.21.1",
5513+
"1.21.2",
5514+
"1.21.3",
5515+
"1.21.4",
5516+
"1.21.5",
5517+
"1.21.6",
5518+
"1.21.7",
5519+
"1.21.8",
5520+
"1.21.9",
5521+
"1.21.10",
5522+
"1.21.11",
5523+
"1.21.12",
5524+
"1.21.13",
5525+
"1.22.0",
5526+
"1.22.1",
5527+
"1.22.2",
5528+
"1.22.3",
5529+
"1.22.4",
5530+
"1.22.5",
5531+
"1.22.6",
5532+
"1.22.7",
5533+
"1.22.8",
5534+
"1.22.9",
5535+
"1.22.10",
5536+
"1.22.11",
5537+
"1.22.12"
5538+
]
5539+
},
5540+
{
5541+
"offset": 232,
5542+
"versions": [
5543+
"1.23.0",
5544+
"1.23.1",
5545+
"1.23.2",
5546+
"1.23.3",
5547+
"1.23.4",
5548+
"1.23.5",
5549+
"1.23.6",
5550+
"1.23.7",
5551+
"1.23.8",
5552+
"1.24.0",
5553+
"1.24.1",
5554+
"1.24.2"
5555+
]
5556+
}
5557+
]
5558+
},
54625559
{
54635560
"field": "Proto",
54645561
"offsets": [

internal/pkg/instrumentation/bpf/net/http/server/bpf/probe.bpf.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,7 @@ volatile const u64 proto_pos;
9090
// A flag indicating whether pattern handlers are supported
9191
volatile const bool pattern_path_supported;
9292
// In case pattern handlers are supported the following offsets will be used:
93-
volatile const u64 req_pat_pos;
94-
volatile const u64 pat_str_pos;
93+
volatile const u64 req_pattern_pos;
9594
// A flag indicating whether the Go version is using swiss maps
9695
volatile const bool swiss_maps_used;
9796

@@ -297,11 +296,7 @@ int uprobe_serverHandler_ServeHTTP_Returns(struct pt_regs *ctx) {
297296
// Collect fields from response
298297
read_go_string(req_ptr, method_ptr_pos, http_server_span->method, sizeof(http_server_span->method), "method from request");
299298
if (pattern_path_supported) {
300-
void *pat_ptr = NULL;
301-
bpf_probe_read(&pat_ptr, sizeof(pat_ptr), (void *)(req_ptr + req_pat_pos));
302-
if (pat_ptr != NULL) {
303-
read_go_string(pat_ptr, pat_str_pos, http_server_span->path_pattern, sizeof(http_server_span->path), "patterned path from Request");
304-
}
299+
read_go_string(req_ptr, req_pattern_pos, http_server_span->path_pattern, sizeof(http_server_span->path_pattern), "pattern from Request");
305300
}
306301
read_go_string(url_ptr, path_ptr_pos, http_server_span->path, sizeof(http_server_span->path), "path from Request.URL");
307302
read_go_string(req_ptr, remote_addr_pos, http_server_span->remote_addr, sizeof(http_server_span->remote_addr), "remote addr from Request.RemoteAddr");

internal/pkg/instrumentation/bpf/net/http/server/bpf_arm64_bpfel.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/pkg/instrumentation/bpf/net/http/server/bpf_x86_bpfel.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/pkg/instrumentation/bpf/net/http/server/probe.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,8 @@ func New(logger *slog.Logger, version string) probe.Probe {
107107
},
108108
probe.StructFieldConstMinVersion{
109109
StructField: probe.StructFieldConst{
110-
Key: "req_pat_pos",
111-
ID: structfield.NewID("std", "net/http", "Request", "pat"),
112-
},
113-
MinVersion: patternPathMinVersion,
114-
},
115-
probe.StructFieldConstMinVersion{
116-
StructField: probe.StructFieldConst{
117-
Key: "pat_str_pos",
118-
ID: structfield.NewID("std", "net/http", "pattern", "str"),
110+
Key: "req_pattern_pos",
111+
ID: structfield.NewID("std", "net/http", "Request", "Pattern"),
119112
},
120113
MinVersion: patternPathMinVersion,
121114
},
@@ -148,7 +141,7 @@ func New(logger *slog.Logger, version string) probe.Probe {
148141
type patternPathSupportedConst struct{}
149142

150143
var (
151-
patternPathMinVersion = semver.New(1, 22, 0, "", "")
144+
patternPathMinVersion = semver.New(1, 23, 0, "", "")
152145
isPatternPathSupported = false
153146
)
154147

internal/tools/inspect/cmd/offsetgen/main.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ func manifests() ([]inspect.Manifest, error) {
107107
structfield.NewID("std", "net/http", "Request", "Proto"),
108108
structfield.NewID("std", "net/http", "Request", "RequestURI"),
109109
structfield.NewID("std", "net/http", "Request", "Host"),
110-
structfield.NewID("std", "net/http", "Request", "pat"),
111-
structfield.NewID("std", "net/http", "pattern", "str"),
110+
structfield.NewID("std", "net/http", "Request", "Pattern"),
112111
structfield.NewID("std", "net/url", "URL", "Path"),
113112
structfield.NewID("std", "net/url", "URL", "Scheme"),
114113
structfield.NewID("std", "net/url", "URL", "Opaque"),

0 commit comments

Comments
 (0)