mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #11706 from gyuho/fix-race
clientv3: fix racy writes to context key
This commit is contained in:
commit
45a45d3c0a
1
.words
1
.words
@ -46,6 +46,7 @@ mutex
|
|||||||
prefetching
|
prefetching
|
||||||
protobuf
|
protobuf
|
||||||
prometheus
|
prometheus
|
||||||
|
racey
|
||||||
rafthttp
|
rafthttp
|
||||||
repin
|
repin
|
||||||
rpc
|
rpc
|
||||||
|
@ -30,9 +30,10 @@ func WithRequireLeader(ctx context.Context) context.Context {
|
|||||||
md = metadata.Pairs(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader)
|
md = metadata.Pairs(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader)
|
||||||
return metadata.NewOutgoingContext(ctx, md)
|
return metadata.NewOutgoingContext(ctx, md)
|
||||||
}
|
}
|
||||||
|
copied := md.Copy() // avoid racey updates
|
||||||
// overwrite/add 'hasleader' key/value
|
// overwrite/add 'hasleader' key/value
|
||||||
md.Set(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader)
|
copied.Set(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader)
|
||||||
return metadata.NewOutgoingContext(ctx, md)
|
return metadata.NewOutgoingContext(ctx, copied)
|
||||||
}
|
}
|
||||||
|
|
||||||
// embeds client version
|
// embeds client version
|
||||||
@ -42,7 +43,8 @@ func withVersion(ctx context.Context) context.Context {
|
|||||||
md = metadata.Pairs(rpctypes.MetadataClientAPIVersionKey, version.APIVersion)
|
md = metadata.Pairs(rpctypes.MetadataClientAPIVersionKey, version.APIVersion)
|
||||||
return metadata.NewOutgoingContext(ctx, md)
|
return metadata.NewOutgoingContext(ctx, md)
|
||||||
}
|
}
|
||||||
|
copied := md.Copy() // avoid racey updates
|
||||||
// overwrite/add version key/value
|
// overwrite/add version key/value
|
||||||
md.Set(rpctypes.MetadataClientAPIVersionKey, version.APIVersion)
|
copied.Set(rpctypes.MetadataClientAPIVersionKey, version.APIVersion)
|
||||||
return metadata.NewOutgoingContext(ctx, md)
|
return metadata.NewOutgoingContext(ctx, copied)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user