Add mutex in Manager to read from m.Paths
Signed-off-by: Antonio Murdaca <me@runcom.ninja>
This commit is contained in:
parent
8c6ed5ebe0
commit
81444369c6
|
@ -44,6 +44,7 @@ type subsystem interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Manager struct {
|
type Manager struct {
|
||||||
|
mu sync.Mutex
|
||||||
Cgroups *configs.Cgroup
|
Cgroups *configs.Cgroup
|
||||||
Paths map[string]string
|
Paths map[string]string
|
||||||
}
|
}
|
||||||
|
@ -82,7 +83,6 @@ type data struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) Apply(pid int) error {
|
func (m *Manager) Apply(pid int) error {
|
||||||
|
|
||||||
if m.Cgroups == nil {
|
if m.Cgroups == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -128,14 +128,25 @@ func (m *Manager) Apply(pid int) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) Destroy() error {
|
func (m *Manager) Destroy() error {
|
||||||
return cgroups.RemovePaths(m.Paths)
|
m.mu.Lock()
|
||||||
|
defer m.mu.Unlock()
|
||||||
|
if err := cgroups.RemovePaths(m.Paths); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
m.Paths = make(map[string]string)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) GetPaths() map[string]string {
|
func (m *Manager) GetPaths() map[string]string {
|
||||||
return m.Paths
|
m.mu.Lock()
|
||||||
|
paths := m.Paths
|
||||||
|
m.mu.Unlock()
|
||||||
|
return paths
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) GetStats() (*cgroups.Stats, error) {
|
func (m *Manager) GetStats() (*cgroups.Stats, error) {
|
||||||
|
m.mu.Lock()
|
||||||
|
defer m.mu.Unlock()
|
||||||
stats := cgroups.NewStats()
|
stats := cgroups.NewStats()
|
||||||
for name, path := range m.Paths {
|
for name, path := range m.Paths {
|
||||||
sys, ok := subsystems[name]
|
sys, ok := subsystems[name]
|
||||||
|
|
|
@ -20,6 +20,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Manager struct {
|
type Manager struct {
|
||||||
|
mu sync.Mutex
|
||||||
Cgroups *configs.Cgroup
|
Cgroups *configs.Cgroup
|
||||||
Paths map[string]string
|
Paths map[string]string
|
||||||
}
|
}
|
||||||
|
@ -253,11 +254,20 @@ func (m *Manager) Apply(pid int) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) Destroy() error {
|
func (m *Manager) Destroy() error {
|
||||||
return cgroups.RemovePaths(m.Paths)
|
m.mu.Lock()
|
||||||
|
defer m.mu.Unlock()
|
||||||
|
if err := cgroups.RemovePaths(m.Paths); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
m.Paths = make(map[string]string)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) GetPaths() map[string]string {
|
func (m *Manager) GetPaths() map[string]string {
|
||||||
return m.Paths
|
m.mu.Lock()
|
||||||
|
paths := m.Paths
|
||||||
|
m.mu.Unlock()
|
||||||
|
return paths
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeFile(dir, file, data string) error {
|
func writeFile(dir, file, data string) error {
|
||||||
|
@ -391,6 +401,8 @@ func (m *Manager) GetPids() ([]int, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) GetStats() (*cgroups.Stats, error) {
|
func (m *Manager) GetStats() (*cgroups.Stats, error) {
|
||||||
|
m.mu.Lock()
|
||||||
|
defer m.mu.Unlock()
|
||||||
stats := cgroups.NewStats()
|
stats := cgroups.NewStats()
|
||||||
for name, path := range m.Paths {
|
for name, path := range m.Paths {
|
||||||
sys, ok := subsystems[name]
|
sys, ok := subsystems[name]
|
||||||
|
|
Loading…
Reference in New Issue