diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-04-23 18:27:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-23 18:27:32 +0200 |
commit | e5a3e46746a0db9fcd9b701693d557438420d1e4 (patch) | |
tree | 5a3cf2e6853a681ec9522f1917b33b9b899fbdb2 /pkg/domain/infra/runtime_libpod.go | |
parent | 397dcc358a60eef1de22384c662480892a317ec4 (diff) | |
parent | 565f93531eae65ca85c286bf6bd2aa07eb713976 (diff) | |
download | podman-e5a3e46746a0db9fcd9b701693d557438420d1e4.tar.gz podman-e5a3e46746a0db9fcd9b701693d557438420d1e4.tar.bz2 podman-e5a3e46746a0db9fcd9b701693d557438420d1e4.zip |
Merge pull request #5946 from jwhonce/wip/shutdown
V2 restore libpod.Shutdown() when exiting podman commands
Diffstat (limited to 'pkg/domain/infra/runtime_libpod.go')
-rw-r--r-- | pkg/domain/infra/runtime_libpod.go | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/pkg/domain/infra/runtime_libpod.go b/pkg/domain/infra/runtime_libpod.go index a6974d251..7c9180d43 100644 --- a/pkg/domain/infra/runtime_libpod.go +++ b/pkg/domain/infra/runtime_libpod.go @@ -6,6 +6,7 @@ import ( "context" "fmt" "os" + "sync" "github.com/containers/libpod/libpod" "github.com/containers/libpod/pkg/cgroups" @@ -18,6 +19,14 @@ import ( flag "github.com/spf13/pflag" ) +var ( + // runtimeSync only guards the non-specialized runtime + runtimeSync sync.Once + // The default GetRuntime() always returns the same object and error + runtimeLib *libpod.Runtime + runtimeErr error +) + type engineOpts struct { name string renumber bool @@ -63,13 +72,16 @@ func GetRuntimeRenumber(ctx context.Context, fs *flag.FlagSet, cfg *entities.Pod // GetRuntime generates a new libpod runtime configured by command line options func GetRuntime(ctx context.Context, flags *flag.FlagSet, cfg *entities.PodmanConfig) (*libpod.Runtime, error) { - return getRuntime(ctx, flags, &engineOpts{ - renumber: false, - migrate: false, - noStore: false, - withFDS: true, - config: cfg, + runtimeSync.Do(func() { + runtimeLib, runtimeErr = getRuntime(ctx, flags, &engineOpts{ + renumber: false, + migrate: false, + noStore: false, + withFDS: true, + config: cfg, + }) }) + return runtimeLib, runtimeErr } // GetRuntimeNoStore generates a new libpod runtime configured by command line options |