diff --git a/auth/oauth2adapt/oauth2adapt.go b/auth/oauth2adapt/oauth2adapt.go index e266b0c9b158..9cc33e5ee648 100644 --- a/auth/oauth2adapt/oauth2adapt.go +++ b/auth/oauth2adapt/oauth2adapt.go @@ -100,8 +100,13 @@ func (ts *tokenSourceAdapter) Token() (*oauth2.Token, error) { Expiry: tok.Expiry, } // Preserve token metadata. - metadata := tok.Metadata - if metadata != nil { + m := tok.Metadata + if m != nil { + // Copy map to avoid concurrent map writes error (#11161). + metadata := make(map[string]interface{}, len(m)+2) + for k, v := range m { + metadata[k] = v + } // Append compute token metadata in converted form. if val, ok := metadata[authTokenSourceKey].(string); ok && val != "" { metadata[oauth2TokenSourceKey] = val