Lock when creating new sessions as access to session map cannot happen
concurrently
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package pwd
|
package pwd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/play-with-docker/play-with-docker/docker"
|
"github.com/play-with-docker/play-with-docker/docker"
|
||||||
@@ -23,6 +24,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var sessions map[string]*Session
|
var sessions map[string]*Session
|
||||||
|
var sessionsMutex sync.Mutex
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
prometheus.MustRegister(sessionsGauge)
|
prometheus.MustRegister(sessionsGauge)
|
||||||
|
|||||||
@@ -52,6 +52,9 @@ type Session struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *pwd) SessionNew(duration time.Duration, stack, stackName string) (*Session, error) {
|
func (p *pwd) SessionNew(duration time.Duration, stack, stackName string) (*Session, error) {
|
||||||
|
sessionsMutex.Lock()
|
||||||
|
defer sessionsMutex.Unlock()
|
||||||
|
|
||||||
s := &Session{}
|
s := &Session{}
|
||||||
s.Id = uuid.NewV4().String()
|
s.Id = uuid.NewV4().String()
|
||||||
s.Instances = map[string]*Instance{}
|
s.Instances = map[string]*Instance{}
|
||||||
|
|||||||
Reference in New Issue
Block a user