Merge pull request #56811 from liggitt/cache-key

Automatic merge from submit-queue (batch tested with PRs 56108, 56811, 57335, 57331, 54530). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

Use struct key for TLS cache

```release-note
NONE
```

Kubernetes-commit: c77830749726a7f7e1190361609cc04512bcf525
This commit is contained in:
Kubernetes Publisher 2017-12-18 17:45:36 -08:00
commit f4d24c8a47
2 changed files with 109 additions and 88 deletions

164
Godeps/Godeps.json generated
View File

@ -372,331 +372,331 @@
},
{
"ImportPath": "k8s.io/api/admissionregistration/v1alpha1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/admissionregistration/v1beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/apps/v1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/apps/v1beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/apps/v1beta2",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/authentication/v1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/authentication/v1beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/authorization/v1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/authorization/v1beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/autoscaling/v1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/autoscaling/v2beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/batch/v1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/batch/v1beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/batch/v2alpha1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/certificates/v1beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/core/v1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/events/v1beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/extensions/v1beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/imagepolicy/v1alpha1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/networking/v1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/policy/v1beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/rbac/v1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/rbac/v1alpha1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/rbac/v1beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/scheduling/v1alpha1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/settings/v1alpha1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/storage/v1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/storage/v1alpha1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/api/storage/v1beta1",
"Rev": "3b9b65abe0aa9d995259dad1469ff3e1f18802c5"
"Rev": "1afd21c1b728221c821dfe71c17ce5ee8061e31b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/equality",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/testing",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/testing/fuzzer",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/testing/roundtrip",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery/announced",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1alpha1",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/fields",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/labels",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/selection",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/types",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/version",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/watch",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
"Rev": "5250765d28a6a1e07c6f09fe814a4b58ad74cc11"
"Rev": "e7ad5e783d5cc59c1aa137f0b13c51baee6ee7c1"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/common",

View File

@ -31,12 +31,28 @@ import (
// the config has no custom TLS options, http.DefaultTransport is returned.
type tlsTransportCache struct {
mu sync.Mutex
transports map[string]*http.Transport
transports map[tlsCacheKey]*http.Transport
}
const idleConnsPerHost = 25
var tlsCache = &tlsTransportCache{transports: make(map[string]*http.Transport)}
var tlsCache = &tlsTransportCache{transports: make(map[tlsCacheKey]*http.Transport)}
type tlsCacheKey struct {
insecure bool
caData string
certData string
keyData string
serverName string
}
func (t tlsCacheKey) String() string {
keyText := "<none>"
if len(t.keyData) > 0 {
keyText = "<redacted>"
}
return fmt.Sprintf("insecure:%v, caData:%#v, certData:%#v, keyData:%s, serverName:%s", t.insecure, t.caData, t.certData, keyText, t.serverName)
}
func (c *tlsTransportCache) get(config *Config) (http.RoundTripper, error) {
key, err := tlsConfigKey(config)
@ -82,11 +98,16 @@ func (c *tlsTransportCache) get(config *Config) (http.RoundTripper, error) {
}
// tlsConfigKey returns a unique key for tls.Config objects returned from TLSConfigFor
func tlsConfigKey(c *Config) (string, error) {
func tlsConfigKey(c *Config) (tlsCacheKey, error) {
// Make sure ca/key/cert content is loaded
if err := loadTLSFiles(c); err != nil {
return "", err
return tlsCacheKey{}, err
}
// Only include the things that actually affect the tls.Config
return fmt.Sprintf("%v/%x/%x/%x/%v", c.TLS.Insecure, c.TLS.CAData, c.TLS.CertData, c.TLS.KeyData, c.TLS.ServerName), nil
return tlsCacheKey{
insecure: c.TLS.Insecure,
caData: string(c.TLS.CAData),
certData: string(c.TLS.CertData),
keyData: string(c.TLS.KeyData),
serverName: c.TLS.ServerName,
}, nil
}