Bug 1843702

Summary: registry-server fails to start on systems where /tmp is unavailable
Product: OpenShift Container Platform Reporter: Nick Hale <nhale>
Component: OLMAssignee: Evan Cordell <ecordell>
OLM sub component: OLM QA Contact: Jian Zhang <jiazha>
Status: CLOSED ERRATA Docs Contact:
Severity: urgent    
Priority: urgent    
Version: 4.5   
Target Milestone: ---   
Target Release: 4.6.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1843705 (view as bug list) Environment:
Last Closed: 2020-10-27 16:04:47 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1843705, 1846016    

Description Nick Hale 2020-06-03 21:22:31 UTC
Description of problem:

The registry-server command fails to start on any system that does not have a /tmp directory available and writable.

This means that any indexes with scratch or binary-only bases are affected.

Version-Release number of selected component (if applicable):

4.5.0

How reproducible:

Always

Steps to Reproduce:
1. Create an index using opm: opm index add --bundles <bundle-img-ref> --tag <index-img-ref> (this should use the binary-only upstream-opm-builder image)
2. Attempt to run the index w/ docker or podman: docker run -it <index-img-ref>

Actual results:

docker run -it <index-img-ref>                                                                                                                                                                                                      ✘ 130
Error: open /tmp/db-085883360: no such file or directory
Usage:
   [flags]

Flags:
  -d, --database string          relative path to sqlite db (default "bundles.db")
  -h, --help                     help for this command
  -p, --port string              port number to serve on (default "50051")
      --skip-migrate             do  not attempt to migrate to the latest db revision when starting
  -t, --termination-log string   path to a container termination log file (default "/dev/termination-log")

time="2020-06-03T20:51:33Z" level=panic msg="open /tmp/db-085883360: no such file or directory"
panic: (*logrus.Entry) (0x1084020,0xc0001436c0)

goroutine 1 [running]:
github.com/sirupsen/logrus.Entry.log(0xc0000b8000, 0xc0001854a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
        /build/vendor/github.com/sirupsen/logrus/entry.go:239 +0x2db
github.com/sirupsen/logrus.(*Entry).Log(0xc000143570, 0xc000000000, 0xc00010ff40, 0x1, 0x1)
        /build/vendor/github.com/sirupsen/logrus/entry.go:268 +0xeb
github.com/sirupsen/logrus.(*Logger).Log(0xc0000b8000, 0x0, 0xc00010ff40, 0x1, 0x1)
        /build/vendor/github.com/sirupsen/logrus/logger.go:192 +0x7d
github.com/sirupsen/logrus.(*Logger).Panic(...)
        /build/vendor/github.com/sirupsen/logrus/logger.go:233
github.com/sirupsen/logrus.Panic(...)
        /build/vendor/github.com/sirupsen/logrus/exported.go:129
main.main()
        /build/cmd/registry-server/main.go:51 +0xbe


Expected results:


The registry-server starts normally; no panic logs.

Comment 4 Jian Zhang 2020-06-11 08:33:54 UTC
1, Build the latest version: opm
[root@preserve-olm-env operator-registry]# ./bin/opm version
Version: version.Version{OpmVersion:"1.12.3", GitCommit:"b3fdc91", BuildDate:"2020-06-11T08:07:39Z", GoOs:"linux", GoArch:"amd64"}

2, run the `index add`
[root@preserve-olm-env operator-registry]# ./bin/opm index add -b quay.io/olmqe/etcd-bundle:0.9.0 -t quay.io/olmqe/etcd-index:1843702
INFO[0000] building the index                            bundles="[quay.io/olmqe/etcd-bundle:0.9.0]"
INFO[0000] resolved name: quay.io/olmqe/etcd-bundle:0.9.0 
INFO[0000] fetched                                       digest="sha256:df6e623ed57f46c4ff80fd2fb027859986066570f7e6aae6435cd74908ed3333"
INFO[0000] fetched                                       digest="sha256:b107658da605b5721c34b3fc2abf9e6515aba4d0a7020e407131f783d77148f3"
INFO[0000] fetched                                       digest="sha256:e2e833ebbda87e017110ab08bd2c03b46540409d9014e4685d2736e206caf0f2"
INFO[0000] fetched                                       digest="sha256:78a6cdfac35dc99cea2ae6e012ddd6d556c163ecf55e694767efb1593f1eeb2c"
INFO[0001] unpacking layer: {application/vnd.docker.image.rootfs.diff.tar.gzip sha256:78a6cdfac35dc99cea2ae6e012ddd6d556c163ecf55e694767efb1593f1eeb2c 8006 [] map[] <nil>} 
INFO[0001] unpacking layer: {application/vnd.docker.image.rootfs.diff.tar.gzip sha256:b107658da605b5721c34b3fc2abf9e6515aba4d0a7020e407131f783d77148f3 260 [] map[] <nil>} 
INFO[0001] Could not find optional dependencies file     dir=bundle_tmp972628853 file=bundle_tmp972628853/metadata load=annotations
INFO[0001] found csv, loading bundle                     dir=bundle_tmp972628853 file=bundle_tmp972628853/manifests load=bundle
INFO[0001] loading bundle file                           dir=bundle_tmp972628853/manifests file=etcdbackups.etcd.database.coreos.com.crd.yaml load=bundle
INFO[0001] loading bundle file                           dir=bundle_tmp972628853/manifests file=etcdclusters.etcd.database.coreos.com.crd.yaml load=bundle
INFO[0001] loading bundle file                           dir=bundle_tmp972628853/manifests file=etcdoperator.v0.9.0.clusterserviceversion.yaml load=bundle
INFO[0001] loading bundle file                           dir=bundle_tmp972628853/manifests file=etcdrestores.etcd.database.coreos.com.crd.yaml load=bundle
INFO[0001] Generating dockerfile                         bundles="[quay.io/olmqe/etcd-bundle:0.9.0]"
INFO[0001] writing dockerfile: index.Dockerfile188207883  bundles="[quay.io/olmqe/etcd-bundle:0.9.0]"
INFO[0001] running podman build                          bundles="[quay.io/olmqe/etcd-bundle:0.9.0]"
INFO[0001] [podman build --format docker -f index.Dockerfile188207883 -t quay.io/olmqe/etcd-index:1843702 .]  bundles="[quay.io/olmqe/etcd-bundle:0.9.0]"

3, Run the podman command, it works well, LGTM, verify it.
[root@preserve-olm-env operator-registry]# podman run -ti quay.io/olmqe/etcd-index:1843702
time="2020-06-11T08:17:08Z" level=info msg="serving registry" database=/database/index.db port=50051

Comment 6 errata-xmlrpc 2020-10-27 16:04:47 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (OpenShift Container Platform 4.6 GA Images), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2020:4196