mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Don't use ini() to set unpigz path
`func init()` is evil here, and the logrus calls are being made before the logger is even setup. It also means in order to use pigz you have to restart the daemon. Instead this takes a small hit and resolves pigz on each extraction. In the grand scheme of decompressing this is a very small hit. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
parent
298ba5b131
commit
35bf4f87d9
1 changed files with 19 additions and 19 deletions
|
@ -27,17 +27,6 @@ import (
|
|||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
var unpigzPath string
|
||||
|
||||
func init() {
|
||||
if path, err := exec.LookPath("unpigz"); err != nil {
|
||||
logrus.Debug("unpigz binary not found in PATH, falling back to go gzip library")
|
||||
} else {
|
||||
logrus.Debugf("Using unpigz binary found at path %s", path)
|
||||
unpigzPath = path
|
||||
}
|
||||
}
|
||||
|
||||
type (
|
||||
// Compression is the state represents if compressed or not.
|
||||
Compression int
|
||||
|
@ -158,19 +147,30 @@ func xzDecompress(ctx context.Context, archive io.Reader) (io.ReadCloser, error)
|
|||
}
|
||||
|
||||
func gzDecompress(ctx context.Context, buf io.Reader) (io.ReadCloser, error) {
|
||||
if unpigzPath == "" {
|
||||
noPigzEnv := os.Getenv("MOBY_DISABLE_PIGZ")
|
||||
var noPigz bool
|
||||
|
||||
if noPigzEnv != "" {
|
||||
var err error
|
||||
noPigz, err = strconv.ParseBool(noPigzEnv)
|
||||
if err != nil {
|
||||
logrus.WithError(err).Warn("invalid value in MOBY_DISABLE_PIGZ env var")
|
||||
}
|
||||
}
|
||||
|
||||
if noPigz {
|
||||
logrus.Debugf("Use of pigz is disabled due to MOBY_DISABLE_PIGZ=%s", noPigzEnv)
|
||||
return gzip.NewReader(buf)
|
||||
}
|
||||
|
||||
disablePigzEnv := os.Getenv("MOBY_DISABLE_PIGZ")
|
||||
if disablePigzEnv != "" {
|
||||
if disablePigz, err := strconv.ParseBool(disablePigzEnv); err != nil {
|
||||
return nil, err
|
||||
} else if disablePigz {
|
||||
return gzip.NewReader(buf)
|
||||
}
|
||||
unpigzPath, err := exec.LookPath("unpigz")
|
||||
if err != nil {
|
||||
logrus.Debugf("unpigz binary not found, falling back to go gzip library")
|
||||
return gzip.NewReader(buf)
|
||||
}
|
||||
|
||||
logrus.Debugf("Using %s to decompress", unpigzPath)
|
||||
|
||||
return cmdStream(exec.CommandContext(ctx, unpigzPath, "-d", "-c"), buf)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue