mirror of
https://github.com/bingohuang/docker-labs.git
synced 2025-07-13 17:42:53 +08:00
Better session lock management
This commit is contained in:
parent
e49245dfe9
commit
d05fe56fea
@ -13,6 +13,8 @@ func DeleteInstance(rw http.ResponseWriter, req *http.Request) {
|
||||
instanceName := vars["instanceName"]
|
||||
|
||||
s := services.GetSession(sessionId)
|
||||
s.Lock()
|
||||
defer s.Unlock()
|
||||
i := services.GetInstance(s, instanceName)
|
||||
err := services.DeleteInstance(s, i)
|
||||
if err != nil {
|
||||
|
@ -16,14 +16,13 @@ func NewInstance(rw http.ResponseWriter, req *http.Request) {
|
||||
s := services.GetSession(sessionId)
|
||||
|
||||
s.Lock()
|
||||
defer s.Unlock()
|
||||
if len(s.Instances) >= 5 {
|
||||
s.Unlock()
|
||||
rw.WriteHeader(http.StatusConflict)
|
||||
return
|
||||
}
|
||||
|
||||
i, err := services.NewInstance(s)
|
||||
s.Unlock()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
//TODO: Set a status error
|
||||
|
@ -59,8 +59,10 @@ func NewSession() (*Session, error) {
|
||||
sessions[s.Id] = s
|
||||
|
||||
// Schedule cleanup of the session
|
||||
time.AfterFunc(4*time.Hour, func() {
|
||||
time.AfterFunc(15*time.Second, func() {
|
||||
s = GetSession(s.Id)
|
||||
s.Lock()
|
||||
defer s.Unlock()
|
||||
wsServer.BroadcastTo(s.Id, "session end")
|
||||
log.Printf("Starting clean up of session [%s]\n", s.Id)
|
||||
for _, i := range s.Instances {
|
||||
|
Loading…
x
Reference in New Issue
Block a user