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