diff --git a/go.mod b/go.mod index c928feb322..f7eba21294 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/mikefarah/yq/v3 v3.0.0-20201202084205-8846255d1c37 github.com/onsi/ginkgo/v2 v2.9.5 github.com/openshift/api v3.9.0+incompatible - github.com/operator-framework/api v0.17.6 + github.com/operator-framework/api v0.17.7-0.20230626210316-aa3e49803e7b github.com/operator-framework/operator-lifecycle-manager v0.0.0-00010101000000-000000000000 github.com/operator-framework/operator-registry v1.27.1 github.com/sirupsen/logrus v1.9.2 diff --git a/vendor/github.com/operator-framework/operator-registry/cmd/opm/serve/serve.go b/vendor/github.com/operator-framework/operator-registry/cmd/opm/serve/serve.go index fc3c482ff8..6a3add607b 100644 --- a/vendor/github.com/operator-framework/operator-registry/cmd/opm/serve/serve.go +++ b/vendor/github.com/operator-framework/operator-registry/cmd/opm/serve/serve.go @@ -36,8 +36,9 @@ type serve struct { port string terminationLog string - debug bool - pprofAddr string + debug bool + pprofAddr string + captureProfiles bool logger *logrus.Entry } @@ -80,7 +81,8 @@ will not be reflected in the served content. cmd.Flags().BoolVar(&s.debug, "debug", false, "enable debug logging") cmd.Flags().StringVarP(&s.terminationLog, "termination-log", "t", "/dev/termination-log", "path to a container termination log file") cmd.Flags().StringVarP(&s.port, "port", "p", "50051", "port number to serve on") - cmd.Flags().StringVar(&s.pprofAddr, "pprof-addr", "", "address of startup profiling endpoint (addr:port format)") + cmd.Flags().StringVar(&s.pprofAddr, "pprof-addr", "localhost:6060", "address of startup profiling endpoint (addr:port format)") + cmd.Flags().BoolVar(&s.captureProfiles, "pprof-capture-profiles", false, "capture pprof CPU profiles") cmd.Flags().StringVar(&s.cacheDir, "cache-dir", "", "if set, sync and persist server cache directory") cmd.Flags().BoolVar(&s.cacheOnly, "cache-only", false, "sync the serve cache and exit without serving") cmd.Flags().BoolVar(&s.cacheEnforceIntegrity, "cache-enforce-integrity", false, "exit with error if cache is not present or has been invalidated. (default: true when --cache-dir is set and --cache-only is false, false otherwise), ") @@ -92,8 +94,10 @@ func (s *serve) run(ctx context.Context) error { if err := p.startEndpoint(); err != nil { return fmt.Errorf("could not start pprof endpoint: %v", err) } - if err := p.startCpuProfileCache(); err != nil { - return fmt.Errorf("could not start CPU profile: %v", err) + if s.captureProfiles { + if err := p.startCpuProfileCache(); err != nil { + return fmt.Errorf("could not start CPU profile: %v", err) + } } // Immediately set up termination log diff --git a/vendor/github.com/operator-framework/operator-registry/pkg/cache/json.go b/vendor/github.com/operator-framework/operator-registry/pkg/cache/json.go index 0899a6f4f8..4327082794 100644 --- a/vendor/github.com/operator-framework/operator-registry/pkg/cache/json.go +++ b/vendor/github.com/operator-framework/operator-registry/pkg/cache/json.go @@ -165,13 +165,16 @@ func (q *JSON) existingDigest() (string, error) { } func (q *JSON) computeDigest(fbcFsys fs.FS) (string, error) { + // We are not sensitive to the size of this buffer, we just need it to be shared. + // For simplicity, do the same as io.Copy() would. + buf := make([]byte, 32*1024) computedHasher := fnv.New64a() - if err := fsToTar(computedHasher, fbcFsys); err != nil { + if err := fsToTar(computedHasher, fbcFsys, buf); err != nil { return "", err } if cacheFS, err := fs.Sub(os.DirFS(q.baseDir), jsonDir); err == nil { - if err := fsToTar(computedHasher, cacheFS); err != nil && !errors.Is(err, os.ErrNotExist) { + if err := fsToTar(computedHasher, cacheFS, buf); err != nil && !errors.Is(err, os.ErrNotExist) { return "", fmt.Errorf("compute hash: %v", err) } } diff --git a/vendor/github.com/operator-framework/operator-registry/pkg/cache/tar.go b/vendor/github.com/operator-framework/operator-registry/pkg/cache/tar.go index b368e011e9..92e83c1817 100644 --- a/vendor/github.com/operator-framework/operator-registry/pkg/cache/tar.go +++ b/vendor/github.com/operator-framework/operator-registry/pkg/cache/tar.go @@ -13,7 +13,12 @@ import ( // This function unsets user and group information in the tar archive so that readers // of archives produced by this function do not need to account for differences in // permissions between source and destination filesystems. -func fsToTar(w io.Writer, fsys fs.FS) error { +func fsToTar(w io.Writer, fsys fs.FS, buf []byte) error { + if buf == nil || len(buf) == 0 { + // We are not sensitive to the size of this buffer, we just need it to be shared. + // For simplicity, do the same as io.Copy() would. + buf = make([]byte, 32*1024) + } tw := tar.NewWriter(w) if err := fs.WalkDir(fsys, ".", func(path string, d fs.DirEntry, err error) error { if err != nil { @@ -52,7 +57,7 @@ func fsToTar(w io.Writer, fsys fs.FS) error { return fmt.Errorf("open file %q: %v", path, err) } defer f.Close() - if _, err := io.Copy(tw, f); err != nil { + if _, err := io.CopyBuffer(tw, f, buf); err != nil { return fmt.Errorf("write tar data for %q: %v", path, err) } return nil diff --git a/vendor/modules.txt b/vendor/modules.txt index c30b2a6706..3b7de0b820 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -642,7 +642,7 @@ github.com/openshift/client-go/config/informers/externalversions/config github.com/openshift/client-go/config/informers/externalversions/config/v1 github.com/openshift/client-go/config/informers/externalversions/internalinterfaces github.com/openshift/client-go/config/listers/config/v1 -# github.com/operator-framework/api v0.17.6 => ./staging/api +# github.com/operator-framework/api v0.17.7-0.20230626210316-aa3e49803e7b => ./staging/api ## explicit; go 1.19 github.com/operator-framework/api/crds github.com/operator-framework/api/pkg/constraints