server: locking around server components
Signed-off-by: Antonio Murdaca <runcom@redhat.com>
This commit is contained in:
parent
66fdf3ae21
commit
158dfdfbda
2 changed files with 63 additions and 17 deletions
|
@ -3,6 +3,7 @@ package server
|
|||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"sync"
|
||||
|
||||
"github.com/kubernetes-incubator/ocid/oci"
|
||||
"github.com/kubernetes-incubator/ocid/utils"
|
||||
|
@ -18,6 +19,7 @@ const (
|
|||
type Server struct {
|
||||
runtime *oci.Runtime
|
||||
sandboxDir string
|
||||
stateLock sync.Mutex
|
||||
state *serverState
|
||||
netPlugin ocicni.CNIPlugin
|
||||
}
|
||||
|
@ -63,37 +65,71 @@ type serverState struct {
|
|||
}
|
||||
|
||||
type sandbox struct {
|
||||
name string
|
||||
logDir string
|
||||
labels map[string]string
|
||||
containers map[string]*oci.Container
|
||||
}
|
||||
|
||||
func (s *Server) addSandbox(sb *sandbox) {
|
||||
s.state.sandboxes[sb.name] = sb
|
||||
}
|
||||
|
||||
func (s *Server) hasSandbox(name string) bool {
|
||||
_, ok := s.state.sandboxes[name]
|
||||
return ok
|
||||
name string
|
||||
logDir string
|
||||
labels map[string]string
|
||||
containersLock sync.Mutex
|
||||
containers map[string]*oci.Container
|
||||
}
|
||||
|
||||
func (s *sandbox) addContainer(c *oci.Container) {
|
||||
s.containersLock.Lock()
|
||||
s.containers[c.Name()] = c
|
||||
s.containersLock.Unlock()
|
||||
}
|
||||
|
||||
func (s *sandbox) getContainer(name string) *oci.Container {
|
||||
s.containersLock.Lock()
|
||||
c := s.containers[name]
|
||||
s.containersLock.Unlock()
|
||||
return c
|
||||
}
|
||||
|
||||
func (s *sandbox) removeContainer(c *oci.Container) {
|
||||
s.containersLock.Lock()
|
||||
delete(s.containers, c.Name())
|
||||
s.containersLock.Unlock()
|
||||
}
|
||||
|
||||
func (s *Server) addSandbox(sb *sandbox) {
|
||||
s.stateLock.Lock()
|
||||
s.state.sandboxes[sb.name] = sb
|
||||
s.stateLock.Unlock()
|
||||
}
|
||||
|
||||
func (s *Server) getSandbox(name string) *sandbox {
|
||||
s.stateLock.Lock()
|
||||
sb := s.state.sandboxes[name]
|
||||
s.stateLock.Unlock()
|
||||
return sb
|
||||
}
|
||||
|
||||
func (s *Server) hasSandbox(name string) bool {
|
||||
s.stateLock.Lock()
|
||||
_, ok := s.state.sandboxes[name]
|
||||
s.stateLock.Unlock()
|
||||
return ok
|
||||
}
|
||||
|
||||
func (s *Server) addContainer(c *oci.Container) {
|
||||
s.stateLock.Lock()
|
||||
sandbox := s.state.sandboxes[c.Sandbox()]
|
||||
sandbox.addContainer(c)
|
||||
s.state.containers[c.Name()] = c
|
||||
s.stateLock.Unlock()
|
||||
}
|
||||
|
||||
func (s *Server) getContainer(name string) *oci.Container {
|
||||
s.stateLock.Lock()
|
||||
c := s.state.containers[name]
|
||||
s.stateLock.Unlock()
|
||||
return c
|
||||
}
|
||||
|
||||
func (s *Server) removeContainer(c *oci.Container) {
|
||||
s.stateLock.Lock()
|
||||
sandbox := s.state.sandboxes[c.Sandbox()]
|
||||
sandbox.removeContainer(c)
|
||||
delete(s.state.containers, c.Name())
|
||||
s.stateLock.Unlock()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue