Skip to content

Commit 9bd0fc7

Browse files
authored
Use OpenTelemetry types. Pass tracer options. (#1177)
1 parent c608cea commit 9bd0fc7

File tree

5 files changed

+116
-72
lines changed

5 files changed

+116
-72
lines changed

.changeset/otel-tracing.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"github.com/livekit/protocol": minor
3+
---
4+
5+
Use OpenTelemetry types. Pass tracer options.

go.mod

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ require (
1515
github.com/jxskiss/base62 v1.1.0
1616
github.com/lithammer/shortuuid/v4 v4.2.0
1717
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731
18-
github.com/livekit/psrpc v0.6.1-0.20250511053145-465289d72c3c
18+
github.com/livekit/psrpc v0.6.1-0.20250726180611-3915e005e741
1919
github.com/mackerelio/go-osstat v0.2.5
2020
github.com/maxbrunsfeld/counterfeiter/v6 v6.11.1
2121
github.com/pion/logging v0.2.4
@@ -29,15 +29,17 @@ require (
2929
github.com/stretchr/testify v1.10.0
3030
github.com/twitchtv/twirp v8.1.3+incompatible
3131
github.com/zeebo/xxh3 v1.0.2
32+
go.opentelemetry.io/otel v1.37.0
33+
go.opentelemetry.io/otel/trace v1.37.0
3234
go.uber.org/atomic v1.11.0
3335
go.uber.org/multierr v1.11.0
3436
go.uber.org/zap v1.27.0
3537
go.uber.org/zap/exp v0.3.0
3638
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b
3739
golang.org/x/mod v0.25.0
38-
golang.org/x/sys v0.33.0
39-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822
40-
google.golang.org/grpc v1.73.0
40+
golang.org/x/sys v0.34.0
41+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074
42+
google.golang.org/grpc v1.74.2
4143
google.golang.org/protobuf v1.36.6
4244
gopkg.in/yaml.v3 v3.0.1
4345
)
@@ -51,6 +53,7 @@ require (
5153
github.com/cespare/xxhash/v2 v2.3.0 // indirect
5254
github.com/davecgh/go-spew v1.1.1 // indirect
5355
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
56+
github.com/go-logr/stdr v1.2.2 // indirect
5457
github.com/google/cel-go v0.25.0 // indirect
5558
github.com/google/uuid v1.6.0 // indirect
5659
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
@@ -76,13 +79,14 @@ require (
7679
github.com/pmezard/go-difflib v1.0.0 // indirect
7780
github.com/prometheus/client_model v0.6.2 // indirect
7881
github.com/prometheus/common v0.64.0 // indirect
79-
github.com/rogpeppe/go-internal v1.11.0 // indirect
8082
github.com/stoewer/go-strcase v1.3.1 // indirect
8183
github.com/wlynxg/anet v0.0.5 // indirect
82-
golang.org/x/crypto v0.39.0 // indirect
83-
golang.org/x/net v0.41.0 // indirect
84-
golang.org/x/sync v0.15.0 // indirect
85-
golang.org/x/text v0.26.0 // indirect
84+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
85+
go.opentelemetry.io/otel/metric v1.37.0 // indirect
86+
golang.org/x/crypto v0.40.0 // indirect
87+
golang.org/x/net v0.42.0 // indirect
88+
golang.org/x/sync v0.16.0 // indirect
89+
golang.org/x/text v0.27.0 // indirect
8690
golang.org/x/tools v0.34.0 // indirect
8791
google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect
8892
)

go.sum

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ github.com/gammazero/deque v1.1.0 h1:OyiyReBbnEG2PP0Bnv1AASLIYvyKqIFN5xfl1t8oGLo
5555
github.com/gammazero/deque v1.1.0/go.mod h1:JVrR+Bj1NMQbPnYclvDlvSX0nVGReLrQZ0aUMuWLctg=
5656
github.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY=
5757
github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
58+
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
5859
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
5960
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
6061
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
@@ -92,8 +93,8 @@ github.com/lithammer/shortuuid/v4 v4.2.0 h1:LMFOzVB3996a7b8aBuEXxqOBflbfPQAiVzkI
9293
github.com/lithammer/shortuuid/v4 v4.2.0/go.mod h1:D5noHZ2oFw/YaKCfGy0YxyE7M0wMbezmMjPdhyEFe6Y=
9394
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731 h1:9x+U2HGLrSw5ATTo469PQPkqzdoU7be46ryiCDO3boc=
9495
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731/go.mod h1:Rs3MhFwutWhGwmY1VQsygw28z5bWcnEYmS1OG9OxjOQ=
95-
github.com/livekit/psrpc v0.6.1-0.20250511053145-465289d72c3c h1:WwEr0YBejYbKzk8LSaO9h8h0G9MnE7shyDu8yXQWmEc=
96-
github.com/livekit/psrpc v0.6.1-0.20250511053145-465289d72c3c/go.mod h1:kmD+AZPkWu0MaXIMv57jhNlbiSZZ/Jx4bzlxBDVmJes=
96+
github.com/livekit/psrpc v0.6.1-0.20250726180611-3915e005e741 h1:KKL1u94l6dF9u4cBwnnfozk27GH1txWy2SlvkfgmzoY=
97+
github.com/livekit/psrpc v0.6.1-0.20250726180611-3915e005e741/go.mod h1:AuDC5uOoEjQJEc69v4Li3t77Ocz0e0NdjQEuFfO+vfk=
9798
github.com/mackerelio/go-osstat v0.2.5 h1:+MqTbZUhoIt4m8qzkVoXUJg1EuifwlAJSk4Yl2GXh+o=
9899
github.com/mackerelio/go-osstat v0.2.5/go.mod h1:atxwWF+POUZcdtR1wnsUcQxTytoHG4uhl2AKKzrOajY=
99100
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
@@ -174,8 +175,8 @@ github.com/puzpuzpuz/xsync/v3 v3.5.1 h1:GJYJZwO6IdxN/IKbneznS6yPkVC+c3zyY/j19c++
174175
github.com/puzpuzpuz/xsync/v3 v3.5.1/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA=
175176
github.com/redis/go-redis/v9 v9.11.0 h1:E3S08Gl/nJNn5vkxd2i78wZxWAPNZgUNTp8WIJUAiIs=
176177
github.com/redis/go-redis/v9 v9.11.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
177-
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
178-
github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
178+
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
179+
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
179180
github.com/sclevine/spec v1.4.0 h1:z/Q9idDcay5m5irkZ28M7PtQM4aOISzOpj4bUPkDee8=
180181
github.com/sclevine/spec v1.4.0/go.mod h1:LvpgJaFyvQzRvc1kaDs0bulYwzC70PbiYjC4QnFHkOM=
181182
github.com/shoenig/test v1.7.0 h1:eWcHtTXa6QLnBvm0jgEabMRN/uJ4DMV3M8xUGgRkZmk=
@@ -210,16 +211,16 @@ github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0=
210211
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
211212
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
212213
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
213-
go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ=
214-
go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y=
215-
go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M=
216-
go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE=
217-
go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY=
218-
go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg=
219-
go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o=
220-
go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w=
221-
go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs=
222-
go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
214+
go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ=
215+
go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I=
216+
go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE=
217+
go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E=
218+
go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs=
219+
go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY=
220+
go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis=
221+
go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4=
222+
go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4=
223+
go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0=
223224
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
224225
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
225226
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
@@ -233,8 +234,8 @@ go.uber.org/zap/exp v0.3.0/go.mod h1:5I384qq7XGxYyByIhHm6jg5CHkGY0nsTfbDLgDDlgJQ
233234
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
234235
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
235236
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
236-
golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
237-
golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
237+
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
238+
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
238239
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o=
239240
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=
240241
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
@@ -246,13 +247,13 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
246247
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
247248
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
248249
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
249-
golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
250-
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
250+
golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
251+
golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
251252
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
252253
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
253254
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
254-
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
255-
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
255+
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
256+
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
256257
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
257258
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
258259
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -261,8 +262,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
261262
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
262263
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
263264
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
264-
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
265-
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
265+
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
266+
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
266267
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
267268
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
268269
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
@@ -274,8 +275,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
274275
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
275276
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
276277
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
277-
golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
278-
golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
278+
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
279+
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
279280
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
280281
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
281282
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
@@ -285,10 +286,10 @@ golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg
285286
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
286287
google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY=
287288
google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc=
288-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE=
289-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
290-
google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok=
291-
google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc=
289+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074 h1:qJW29YvkiJmXOYMu5Tf8lyrTp3dOS+K4z6IixtLaCf8=
290+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250721164621-a45f3dfb1074/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
291+
google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4=
292+
google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM=
292293
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
293294
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
294295
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

rpc/typed_api.go

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@ import (
1919
"fmt"
2020
"time"
2121

22+
"github.com/livekit/psrpc"
23+
"github.com/livekit/psrpc/pkg/middleware"
24+
"github.com/livekit/psrpc/pkg/middleware/otelpsrpc"
25+
2226
"github.com/livekit/protocol/livekit"
2327
"github.com/livekit/protocol/logger"
28+
"github.com/livekit/protocol/tracer"
2429
"github.com/livekit/protocol/utils/must"
25-
"github.com/livekit/psrpc"
26-
"github.com/livekit/psrpc/pkg/middleware"
2730
)
2831

2932
type PSRPCConfig struct {
@@ -42,22 +45,26 @@ var DefaultPSRPCConfig = PSRPCConfig{
4245

4346
type ClientParams struct {
4447
PSRPCConfig
45-
Bus psrpc.MessageBus
46-
Logger logger.Logger
47-
Observer middleware.MetricsObserver
48+
Bus psrpc.MessageBus
49+
Logger logger.Logger
50+
TracerProvider tracer.TracerProvider // will use default if unset
51+
Observer middleware.MetricsObserver
52+
ClientOptions []psrpc.ClientOption
4853
}
4954

5055
func NewClientParams(
5156
config PSRPCConfig,
5257
bus psrpc.MessageBus,
5358
logger logger.Logger,
5459
observer middleware.MetricsObserver,
60+
opts ...psrpc.ClientOption,
5561
) ClientParams {
5662
return ClientParams{
57-
PSRPCConfig: config,
58-
Bus: bus,
59-
Logger: logger,
60-
Observer: observer,
63+
PSRPCConfig: config,
64+
Bus: bus,
65+
Logger: logger,
66+
Observer: observer,
67+
ClientOptions: opts,
6168
}
6269
}
6370

@@ -79,6 +86,10 @@ func (p *ClientParams) Options() []psrpc.ClientOption {
7986
Backoff: p.Backoff,
8087
}))
8188
}
89+
opts = append(opts, otelpsrpc.ClientOptions(otelpsrpc.Config{
90+
TracerProvider: p.TracerProvider,
91+
}))
92+
opts = append(opts, p.ClientOptions...)
8293
return opts
8394
}
8495

@@ -90,23 +101,35 @@ func WithServerObservability(logger logger.Logger) psrpc.ServerOption {
90101
return psrpc.WithServerOptions(
91102
middleware.WithServerMetrics(PSRPCMetricsObserver{}),
92103
WithServerLogger(logger),
104+
otelpsrpc.ServerOptions(otelpsrpc.Config{}),
93105
)
94106
}
95107

96-
func WithDefaultServerOptions(psrpcConfig PSRPCConfig, logger logger.Logger) psrpc.ServerOption {
97-
return psrpc.WithServerOptions(
108+
func WithDefaultServerOptions(psrpcConfig PSRPCConfig, logger logger.Logger, extra ...psrpc.ServerOption) psrpc.ServerOption {
109+
opts := []psrpc.ServerOption{
98110
psrpc.WithServerChannelSize(psrpcConfig.BufferSize),
99111
WithServerObservability(logger),
100-
)
112+
}
113+
opts = append(opts, extra...)
114+
return psrpc.WithServerOptions(opts...)
101115
}
102116

103117
func WithClientObservability(logger logger.Logger) psrpc.ClientOption {
104118
return psrpc.WithClientOptions(
105119
middleware.WithClientMetrics(PSRPCMetricsObserver{}),
106120
WithClientLogger(logger),
121+
otelpsrpc.ClientOptions(otelpsrpc.Config{}),
107122
)
108123
}
109124

125+
func WithDefaultClientOptions(logger logger.Logger, extra ...psrpc.ClientOption) psrpc.ClientOption {
126+
opts := []psrpc.ClientOption{
127+
WithClientObservability(logger),
128+
}
129+
opts = append(opts, extra...)
130+
return psrpc.WithClientOptions(opts...)
131+
}
132+
110133
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -generate
111134

112135
type TypedSignalClient = SignalClient[livekit.NodeID]

tracer/tracer.go

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,47 @@
1414

1515
package tracer
1616

17-
import "context"
17+
import (
18+
"context"
1819

19-
type Tracer interface {
20-
Start(ctx context.Context, spanName string, opts ...interface{}) (context.Context, Span)
21-
}
22-
23-
type Span interface {
24-
RecordError(err error)
25-
End()
26-
}
20+
"go.opentelemetry.io/otel"
21+
"go.opentelemetry.io/otel/trace"
22+
"go.opentelemetry.io/otel/trace/noop"
23+
)
2724

28-
var tracer Tracer = &NoOpTracer{}
25+
type TracerProvider = trace.TracerProvider
2926

30-
// Can be used for your own tracing (for example, with Lightstep)
31-
func SetTracer(t Tracer) {
32-
tracer = t
33-
}
27+
type Tracer = trace.Tracer
3428

35-
func Start(ctx context.Context, spanName string, opts ...interface{}) (context.Context, Span) {
36-
return tracer.Start(ctx, spanName, opts...)
37-
}
29+
type Span = trace.Span
3830

39-
type NoOpTracer struct{}
31+
var globalTracer Tracer
4032

41-
func (t *NoOpTracer) Start(ctx context.Context, _ string, _ ...interface{}) (context.Context, Span) {
42-
return ctx, &NoOpSpan{}
33+
// SetTracer can be used for your own tracing (for example, with Lightstep).
34+
//
35+
// Deprecated: Use otel.SetTracerProvider.
36+
func SetTracer(t Tracer) {
37+
globalTracer = t
4338
}
4439

45-
type NoOpSpan struct{}
40+
// Start a new span.
41+
//
42+
// Deprecated: Use otel.Tracer for your service, and call Start on it instead.
43+
func Start(ctx context.Context, spanName string, opts ...any) (context.Context, Span) {
44+
tracer := globalTracer
45+
if tracer == nil {
46+
tracer = otel.Tracer("legacy")
47+
}
48+
var sopts []trace.SpanStartOption
49+
for _, opt := range opts {
50+
switch opt := opt.(type) {
51+
case trace.SpanStartOption:
52+
sopts = append(sopts, opt)
53+
}
54+
}
55+
return tracer.Start(ctx, spanName, sopts...)
56+
}
4657

47-
func (s *NoOpSpan) RecordError(_ error) {}
58+
type NoOpTracer = noop.Tracer
4859

49-
func (s *NoOpSpan) End() {}
60+
type NoOpSpan = noop.Span

0 commit comments

Comments
 (0)