Use runtime lockDir in BoltDB state

Instead of storing the runtime's file lock dir in the BoltDB
state, refer to the runtime inside the Bolt state instead, and
use the path stored in the runtime.

This is necessary since we moved DB initialization very far up in
runtime init, before the locks dir is properly initialized (and
it must happen before the locks dir can be created, as we use the
DB to retrieve the proper path for the locks dir now).

Signed-off-by: Matthew Heon <mheon@redhat.com>
This commit is contained in:
Matthew Heon
2018-12-04 13:50:38 -05:00
parent 795fbba769
commit e3882cfa2d
4 changed files with 6 additions and 7 deletions

View File

@ -18,7 +18,6 @@ type BoltState struct {
dbLock sync.Mutex dbLock sync.Mutex
namespace string namespace string
namespaceBytes []byte namespaceBytes []byte
lockDir string
runtime *Runtime runtime *Runtime
} }
@ -51,10 +50,9 @@ type BoltState struct {
// containers/storage do not occur. // containers/storage do not occur.
// NewBoltState creates a new bolt-backed state database // NewBoltState creates a new bolt-backed state database
func NewBoltState(path, lockDir string, runtime *Runtime) (State, error) { func NewBoltState(path string, runtime *Runtime) (State, error) {
state := new(BoltState) state := new(BoltState)
state.dbPath = path state.dbPath = path
state.lockDir = lockDir
state.runtime = runtime state.runtime = runtime
state.namespace = "" state.namespace = ""
state.namespaceBytes = nil state.namespaceBytes = nil

View File

@ -266,7 +266,7 @@ func (s *BoltState) getContainerFromDB(id []byte, ctr *Container, ctrsBkt *bolt.
} }
// Get the lock // Get the lock
lockPath := filepath.Join(s.lockDir, string(id)) lockPath := filepath.Join(s.runtime.lockDir, string(id))
lock, err := storage.GetLockfile(lockPath) lock, err := storage.GetLockfile(lockPath)
if err != nil { if err != nil {
return errors.Wrapf(err, "error retrieving lockfile for container %s", string(id)) return errors.Wrapf(err, "error retrieving lockfile for container %s", string(id))
@ -302,7 +302,7 @@ func (s *BoltState) getPodFromDB(id []byte, pod *Pod, podBkt *bolt.Bucket) error
} }
// Get the lock // Get the lock
lockPath := filepath.Join(s.lockDir, string(id)) lockPath := filepath.Join(s.runtime.lockDir, string(id))
lock, err := storage.GetLockfile(lockPath) lock, err := storage.GetLockfile(lockPath)
if err != nil { if err != nil {
return errors.Wrapf(err, "error retrieving lockfile for pod %s", string(id)) return errors.Wrapf(err, "error retrieving lockfile for pod %s", string(id))

View File

@ -494,7 +494,7 @@ func makeRuntime(runtime *Runtime) (err error) {
case BoltDBStateStore: case BoltDBStateStore:
dbPath := filepath.Join(runtime.config.StaticDir, "bolt_state.db") dbPath := filepath.Join(runtime.config.StaticDir, "bolt_state.db")
state, err := NewBoltState(dbPath, runtime.lockDir, runtime) state, err := NewBoltState(dbPath, runtime)
if err != nil { if err != nil {
return err return err
} }

View File

@ -52,8 +52,9 @@ func getEmptyBoltState() (s State, p string, p2 string, err error) {
runtime := new(Runtime) runtime := new(Runtime)
runtime.config = new(RuntimeConfig) runtime.config = new(RuntimeConfig)
runtime.config.StorageConfig = storage.StoreOptions{} runtime.config.StorageConfig = storage.StoreOptions{}
runtime.lockDir = lockDir
state, err := NewBoltState(dbPath, lockDir, runtime) state, err := NewBoltState(dbPath, runtime)
if err != nil { if err != nil {
return nil, "", "", err return nil, "", "", err
} }