1
0
mirror of https://github.com/rancher/norman.git synced 2025-09-01 23:36:58 +00:00

Fix concurrent map read/write

Problem:
If you set a resource's labels to a global/shared map variable,
norman will modify that map by adding a label. In race conditions,
this can cause a concurrent map read/write panic.

Solution:
Copy the map in norman before modifying it.
This commit is contained in:
Craig Jellick
2019-02-12 13:06:49 -07:00
parent b694ecb0eb
commit 445b05f70c

View File

@@ -102,6 +102,13 @@ func (p *ObjectClient) Create(o runtime.Object) (runtime.Object, error) {
labels := obj.GetLabels()
if labels == nil {
labels = make(map[string]string)
} else {
ls := make(map[string]string)
for k, v := range labels {
ls[k] = v
}
labels = ls
}
labels["cattle.io/creator"] = "norman"
obj.SetLabels(labels)