Skip to content

Commit

Permalink
chore: remove reflection zero type when zero value is known (PROJQUAY…
Browse files Browse the repository at this point in the history
…-6620)

reflection uses unsafe types and is cpu intensive. we can reduce cpu
cycles on every api call by simple comparing an empty strings equality
to the value of the AuthToken.

strings.EqualFold is a std lib solution that provides similar
functionality, but that is not necessary for comparing empty strings as
it simply uses the standard equality operator as well

Topic: rm-reflection

Relative: projquay-6620
Signed-off-by: Ross Bryan <robryan@redhat.com>
  • Loading branch information
arborite-rh committed Mar 6, 2024
1 parent e2effef commit fe678d0
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 8 deletions.
4 changes: 1 addition & 3 deletions pkg/client/quay/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ import (
"io/ioutil"
"net/http"
"net/url"

"github.com/quay/quay-bridge-operator/pkg/utils"
)

type QuayClient struct {
Expand Down Expand Up @@ -172,7 +170,7 @@ func (c *QuayClient) newRequest(method, path string, body interface{}) (*http.Re
}

req, err := http.NewRequest(method, u.String(), buf)
if !utils.IsZeroOfUnderlyingType(c.AuthToken) {
if c.AuthToken != "" {
req.Header.Set("Authorization", "Bearer "+c.AuthToken)
}

Expand Down
5 changes: 0 additions & 5 deletions pkg/utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,12 @@ package utils

import (
"fmt"
"reflect"

"github.com/quay/quay-bridge-operator/pkg/constants"
"github.com/quay/quay-bridge-operator/pkg/logging"
corev1 "k8s.io/api/core/v1"
)

func IsZeroOfUnderlyingType(x interface{}) bool {
return reflect.DeepEqual(x, reflect.Zero(reflect.TypeOf(x)).Interface())
}

func RemoveItemsFromSlice(s []string, r []string) []string {

for i, v := range s {
Expand Down

0 comments on commit fe678d0

Please sign in to comment.