diff --git a/src/group.go b/src/group.go index 47de5d2..f0109ad 100644 --- a/src/group.go +++ b/src/group.go @@ -11,7 +11,7 @@ var groupManagerInstance *GroupManager var groupManagerInstanceLock sync.Mutex func InstanceOfGroupManager() *GroupManager { - defer groupManagerInstanceLock.Lock() + defer groupManagerInstanceLock.Unlock() groupManagerInstanceLock.Lock() if groupManagerInstance == nil { @@ -22,40 +22,40 @@ func InstanceOfGroupManager() *GroupManager { func (gm *GroupManager) Add(group Group) MsgGroupCreate { defer gm.mu.Unlock() + gm.mu.Lock() if _, ok := gm.groups[group.Name]; ok { return MsgGroupCreate{Code: 1, Error: "Name already exists!"} } gm.groups[group.Name] = group - gm.mu.Lock() return MsgGroupCreate{} } func (gm *GroupManager) Update(group Group) MsgGroupCreate { defer gm.mu.Unlock() + gm.mu.Lock() if _, ok := gm.groups[group.Name]; !ok { return MsgGroupCreate{Code: 1, Error: "Group not exists!"} } gm.groups[group.Name] = group - gm.mu.Lock() return MsgGroupCreate{} } func (gm *GroupManager) Remove(group Group) MsgGroupCreate { defer gm.mu.Unlock() + gm.mu.Lock() if _, ok := gm.groups[group.Name]; !ok { return MsgGroupCreate{Code: 1, Error: "Group not exists!"} } delete(gm.groups, group.Name) - gm.mu.Lock() return MsgGroupCreate{} } func (gm *GroupManager) List() MsgGroupList { defer gm.mu.Unlock() + gm.mu.Lock() var result []Group for _, v := range gm.groups { result = append(result, v) } - gm.mu.Lock() return MsgGroupList{Groups: result} } diff --git a/src/main.go b/src/main.go index 9c90e5e..ffc2374 100644 --- a/src/main.go +++ b/src/main.go @@ -97,7 +97,7 @@ func serverAPI(w http.ResponseWriter, r *http.Request) { log.Debug("group_add") var group Group msg := MsgGroupCreate{Code: 0} - err := json.Unmarshal([]byte(string(r.PostFormValue("job"))), &group) + err := json.Unmarshal([]byte(string(r.PostFormValue("group"))), &group) if err != nil { msg.Code = 1 msg.Error = err.Error() diff --git a/src/scheduler_fair.go b/src/scheduler_fair.go index 19a4565..550b002 100644 --- a/src/scheduler_fair.go +++ b/src/scheduler_fair.go @@ -11,7 +11,6 @@ type SchedulerFair struct { queue []Job mu sync.Mutex scheduling sync.Mutex - jobs map[string]*JobManager } diff --git a/src/util.go b/src/util.go index a06b198..fee9def 100644 --- a/src/util.go +++ b/src/util.go @@ -137,9 +137,13 @@ type Task struct { } type Group struct { - Name string `json:"name"` - Weight int `json:"weight"` - NumGPU int `json:"gpu_number"` + Name string `json:"name"` + Weight int `json:"weight"` + Reserved bool `json:"reserved"` + NumGPU int `json:"quota_gpu"` + MemoryGPU int `json:"quota_gpu_mem"` + CPU int `json:"quota_cpu"` + Memory int `json:"quota_mem"` } type MsgGroupCreate struct {