sync: squashed up to merge 94b5aeba9dfa5f10c8a920a229795249a919c127 in e72b32558c8e9ed16690ef5a8e909c12fcc47f87

This commit is contained in:
Kubernetes Prow Robot 2019-01-31 00:20:19 -08:00 committed by Kubernetes Publisher
parent 49d4edf419
commit 0d661d3855
2 changed files with 14 additions and 7 deletions

2
Godeps/Godeps.json generated
View File

@ -56,7 +56,7 @@
}, },
{ {
"ImportPath": "github.com/evanphx/json-patch", "ImportPath": "github.com/evanphx/json-patch",
"Rev": "36442dbdb585210f8d5a1b45e67aa323c197d5c4" "Rev": "d4020504c68b6bfa818032bedfb48e33e9638506"
}, },
{ {
"ImportPath": "github.com/gogo/protobuf/proto", "ImportPath": "github.com/gogo/protobuf/proto",

View File

@ -148,12 +148,19 @@ func (c *threadSafeMap) Index(indexName string, obj interface{}) ([]interface{},
} }
index := c.indices[indexName] index := c.indices[indexName]
// need to de-dupe the return list. Since multiple keys are allowed, this can happen. var returnKeySet sets.String
returnKeySet := sets.String{} if len(indexKeys) == 1 {
for _, indexKey := range indexKeys { // In majority of cases, there is exactly one value matching.
set := index[indexKey] // Optimize the most common path - deduping is not needed here.
for _, key := range set.UnsortedList() { returnKeySet = index[indexKeys[0]]
returnKeySet.Insert(key) } else {
// Need to de-dupe the return list.
// Since multiple keys are allowed, this can happen.
returnKeySet = sets.String{}
for _, indexKey := range indexKeys {
for key := range index[indexKey] {
returnKeySet.Insert(key)
}
} }
} }