daemon: lock in snapshotter setting at daemon init
Feature flags are one of the configuration items which can be reloaded without restarting the daemon. Whether the daemon uses the containerd snapshotter service or the legacy graph drivers is controlled by a feature flag. However, much of the code which checks the snapshotter feature flag assumes that the flag cannot change at runtime. Make it so that the snapshotter setting can only be changed by restarting the daemon, even if the flag state changes after a live configuration reload. Signed-off-by: Cory Snider <csnider@mirantis.com>
This commit is contained in:
parent
7e01865fb6
commit
9b9c5242eb
1 changed files with 10 additions and 10 deletions
|
@ -129,6 +129,8 @@ type Daemon struct {
|
|||
// It stores metadata for the content store (used for manifest caching)
|
||||
// This needs to be closed on daemon exit
|
||||
mdDB *bbolt.DB
|
||||
|
||||
usesSnapshotter bool
|
||||
}
|
||||
|
||||
// ID returns the daemon id
|
||||
|
@ -158,16 +160,7 @@ func (daemon *Daemon) Features() *map[string]bool {
|
|||
|
||||
// UsesSnapshotter returns true if feature flag to use containerd snapshotter is enabled
|
||||
func (daemon *Daemon) UsesSnapshotter() bool {
|
||||
// TEST_INTEGRATION_USE_SNAPSHOTTER is used for integration tests only.
|
||||
if os.Getenv("TEST_INTEGRATION_USE_SNAPSHOTTER") != "" {
|
||||
return true
|
||||
}
|
||||
if daemon.configStore.Features != nil {
|
||||
if b, ok := daemon.configStore.Features["containerd-snapshotter"]; ok {
|
||||
return b
|
||||
}
|
||||
}
|
||||
return false
|
||||
return daemon.usesSnapshotter
|
||||
}
|
||||
|
||||
// RegistryHosts returns registry configuration in containerd resolvers format
|
||||
|
@ -801,6 +794,13 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S
|
|||
startupDone: make(chan struct{}),
|
||||
}
|
||||
|
||||
// TEST_INTEGRATION_USE_SNAPSHOTTER is used for integration tests only.
|
||||
if os.Getenv("TEST_INTEGRATION_USE_SNAPSHOTTER") != "" {
|
||||
d.usesSnapshotter = true
|
||||
} else {
|
||||
d.usesSnapshotter = config.Features["containerd-snapshotter"]
|
||||
}
|
||||
|
||||
// Ensure the daemon is properly shutdown if there is a failure during
|
||||
// initialization
|
||||
defer func() {
|
||||
|
|
Loading…
Reference in a new issue