Skip to content

Commit 1955938

Browse files
committed
kadm: do not reuse ApiVersions in many concurrent requests
The client calls SetVersion internally per request, so doing this concurrently leads to races.
1 parent 6a961da commit 1955938

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

pkg/kadm/acls.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -924,7 +924,7 @@ func (cl *Client) DescribeACLs(ctx context.Context, b *ACLBuilder) (DescribeACLs
924924
)
925925
defer cancel()
926926
for i := range descs {
927-
req := descs[i]
927+
req := descs[i] // each req is unique per loop, we are not reusing req, this is safe
928928
myIdx := i
929929
wg.Add(1)
930930
go func() {

pkg/kadm/misc.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,6 @@ func (cl *Client) ApiVersions(ctx context.Context) (BrokersApiVersions, error) {
244244
return nil, err
245245
}
246246

247-
req := kmsg.NewPtrApiVersionsRequest()
248-
req.ClientSoftwareName = "kadm"
249-
req.ClientSoftwareVersion = softwareVersion()
250-
251247
var mu sync.Mutex
252248
var wg sync.WaitGroup
253249
vs := make(BrokersApiVersions, len(m.Brokers))
@@ -256,6 +252,9 @@ func (cl *Client) ApiVersions(ctx context.Context) (BrokersApiVersions, error) {
256252
wg.Add(1)
257253
go func() {
258254
defer wg.Done()
255+
req := kmsg.NewPtrApiVersionsRequest()
256+
req.ClientSoftwareName = "kadm"
257+
req.ClientSoftwareVersion = softwareVersion()
259258
v := BrokerApiVersions{NodeID: n, keyVersions: make(map[int16]minmax)}
260259
v.raw, v.Err = req.RequestWith(ctx, cl.cl.Broker(int(n)))
261260

0 commit comments

Comments
 (0)