Skip to content

Commit 27830e3

Browse files
fix(deps): update module google.golang.org/grpc to v1.77.0 (#3055)
* fix(deps): update module google.golang.org/grpc to v1.77.0 * Run go mod tidy * Update grpc probe to support 1.77.0 * Fix formatting --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Tyler Yahn <[email protected]>
1 parent 3f332bd commit 27830e3

File tree

9 files changed

+72
-10
lines changed

9 files changed

+72
-10
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ require (
3232
go.opentelemetry.io/otel/trace v1.38.0
3333
golang.org/x/arch v0.23.0
3434
golang.org/x/sys v0.38.0
35-
google.golang.org/grpc v1.76.0
35+
google.golang.org/grpc v1.77.0
3636
gopkg.in/yaml.v3 v3.0.1
3737
)
3838

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -301,8 +301,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20251124214823-79d6a2a48846 h1:
301301
google.golang.org/genproto/googleapis/api v0.0.0-20251124214823-79d6a2a48846/go.mod h1:Fk4kyraUvqD7i5H6S43sj2W98fbZa75lpZz/eUyhfO0=
302302
google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846 h1:Wgl1rcDNThT+Zn47YyCXOXyX/COgMTIdhJ717F0l4xk=
303303
google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
304-
google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A=
305-
google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=
304+
google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM=
305+
google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig=
306306
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
307307
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
308308
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

internal/pkg/instrumentation/bpf/google.golang.org/grpc/server/bpf/probe.bpf.c

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ UPROBE_RETURN(server_handleStream, struct grpc_request_t, grpc_events)
226226
// func (s *Server) handleStream(t transport.ServerTransport, stream *transport.ServerStream)
227227
// https://github.com/grpc/grpc-go/blob/317271b232677b7869576a49855b01b9f4775d67/server.go#L1735
228228
//
229-
// This is only compatible with versions > 1.69.0 of the Server.
229+
// This is only compatible with versions > 1.69.0 and < 1.77.0 of the Server.
230230
SEC("uprobe/server_handleStream2")
231231
int uprobe_server_handleStream2(struct pt_regs *ctx) {
232232
u64 server_stream_pos = 4;
@@ -301,6 +301,41 @@ int uprobe_server_handleStream2_Returns(struct pt_regs *ctx) {
301301
return 0;
302302
}
303303

304+
// This instrumentation attaches uprobe to the following function:
305+
// func (s *Server) handleStream(t transport.ServerTransport, stream *transport.ServerStream)
306+
// https://github.com/grpc/grpc-go/blob/805b1f88c5fb9419e3837c72e1deb9c2ec677ffe/server.go#L1767
307+
//
308+
// This is only compatible with versions >= 1.77.0 of the Server.
309+
SEC("uprobe/server_handleStream3")
310+
int uprobe_server_handleStream3(struct pt_regs *ctx) {
311+
u64 server_stream_pos = 4;
312+
// Stream is embedded in ServerStream.
313+
void *stream_pos = get_argument(ctx, server_stream_pos);
314+
if (stream_pos == NULL) {
315+
bpf_printk(
316+
"grpc:server:uprobe/server_handleStream3: failed to get ServerStream.Stream arg");
317+
return -1;
318+
}
319+
320+
struct go_iface go_context = {0};
321+
long rc = bpf_probe_read_user(
322+
&go_context.type, sizeof(go_context.type), (void *)(stream_pos + stream_ctx_pos));
323+
if (rc != 0) {
324+
bpf_printk("grpc:server:uprobe/server_handleStream3: failed to read context type");
325+
return -2;
326+
}
327+
328+
rc = bpf_probe_read_user(&go_context.data,
329+
sizeof(go_context.data),
330+
get_go_interface_instance(stream_pos + stream_ctx_pos));
331+
if (rc != 0) {
332+
bpf_printk("grpc:server:uprobe/server_handleStream3: failed to read context data");
333+
return -3;
334+
}
335+
336+
return handleStream(ctx, stream_pos, &go_context);
337+
}
338+
304339
// func (d *http2Server) operateHeader(frame *http2.MetaHeadersFrame) error
305340
// for version 1.60 and above:
306341
// func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeadersFrame, handle func(*Stream)) error

internal/pkg/instrumentation/bpf/google.golang.org/grpc/server/bpf_arm64_bpfel.go

Lines changed: 3 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/google.golang.org/grpc/server/bpf_x86_bpfel.go

Lines changed: 3 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/google.golang.org/grpc/server/probe.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ var (
4141
// handleStream methods changed to accept a *transport.ServerStream instead
4242
// of a *transport.Stream.
4343
serverStreamVersion = semver.New(1, 69, 0, "", "")
44+
// embeddedStreamVersion is the version *transport.ServerStream embeds a
45+
// Stream instead of a *Stream.
46+
embeddedStreamVersion = semver.New(1, 77, 0, "", "")
4447
)
4548

4649
// New returns a new [probe.Probe].
@@ -191,11 +194,29 @@ func New(logger *slog.Logger, ver string) probe.Probe {
191194
Sym: "google.golang.org/grpc.(*Server).handleStream",
192195
EntryProbe: "uprobe_server_handleStream2",
193196
ReturnProbe: "uprobe_server_handleStream2_Returns",
197+
PackageConstraints: []probe.PackageConstraints{
198+
{
199+
Package: "google.golang.org/grpc",
200+
Constraints: must(semver.NewConstraint(
201+
fmt.Sprintf(
202+
"> %s, < %s",
203+
serverStreamVersion,
204+
embeddedStreamVersion,
205+
),
206+
)),
207+
FailureMode: probe.FailureModeIgnore,
208+
},
209+
},
210+
},
211+
{
212+
Sym: "google.golang.org/grpc.(*Server).handleStream",
213+
EntryProbe: "uprobe_server_handleStream3",
214+
ReturnProbe: "uprobe_server_handleStream_Returns",
194215
PackageConstraints: []probe.PackageConstraints{
195216
{
196217
Package: "google.golang.org/grpc",
197218
Constraints: must(
198-
semver.NewConstraint(">= " + serverStreamVersion.String()),
219+
semver.NewConstraint(">= " + embeddedStreamVersion.String()),
199220
),
200221
FailureMode: probe.FailureModeIgnore,
201222
},

internal/test/e2e/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ require (
1616
go.opentelemetry.io/otel v1.38.0
1717
go.opentelemetry.io/otel/trace v1.38.0
1818
go.uber.org/goleak v1.3.0
19-
google.golang.org/grpc v1.76.0
19+
google.golang.org/grpc v1.77.0
2020
google.golang.org/grpc/examples v0.0.0-20251201161352-432bda305269
2121
)
2222

internal/test/e2e/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,8 +401,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20251124214823-79d6a2a48846 h1:
401401
google.golang.org/genproto/googleapis/api v0.0.0-20251124214823-79d6a2a48846/go.mod h1:Fk4kyraUvqD7i5H6S43sj2W98fbZa75lpZz/eUyhfO0=
402402
google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846 h1:Wgl1rcDNThT+Zn47YyCXOXyX/COgMTIdhJ717F0l4xk=
403403
google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
404-
google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A=
405-
google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=
404+
google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM=
405+
google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig=
406406
google.golang.org/grpc/examples v0.0.0-20251201161352-432bda305269 h1:tda41s2oteO4JbB+ba4VWy0rrRzHlJP03qNyJU17c2M=
407407
google.golang.org/grpc/examples v0.0.0-20251201161352-432bda305269/go.mod h1:hy3hZ/5gzAo3RS0cNe7F165B2H/fcJfYEc070uOgfHc=
408408
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=

internal/tools/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -801,8 +801,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac
801801
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
802802
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
803803
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
804-
google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A=
805-
google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=
804+
google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM=
805+
google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig=
806806
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
807807
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
808808
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=

0 commit comments

Comments
 (0)