mirror of
https://github.com/newnius/YAO-scheduler.git
synced 2025-12-13 07:46:43 +00:00
bugfix
This commit is contained in:
10
src/group.go
10
src/group.go
@@ -11,7 +11,7 @@ var groupManagerInstance *GroupManager
|
|||||||
var groupManagerInstanceLock sync.Mutex
|
var groupManagerInstanceLock sync.Mutex
|
||||||
|
|
||||||
func InstanceOfGroupManager() *GroupManager {
|
func InstanceOfGroupManager() *GroupManager {
|
||||||
defer groupManagerInstanceLock.Lock()
|
defer groupManagerInstanceLock.Unlock()
|
||||||
groupManagerInstanceLock.Lock()
|
groupManagerInstanceLock.Lock()
|
||||||
|
|
||||||
if groupManagerInstance == nil {
|
if groupManagerInstance == nil {
|
||||||
@@ -22,40 +22,40 @@ func InstanceOfGroupManager() *GroupManager {
|
|||||||
|
|
||||||
func (gm *GroupManager) Add(group Group) MsgGroupCreate {
|
func (gm *GroupManager) Add(group Group) MsgGroupCreate {
|
||||||
defer gm.mu.Unlock()
|
defer gm.mu.Unlock()
|
||||||
|
gm.mu.Lock()
|
||||||
if _, ok := gm.groups[group.Name]; ok {
|
if _, ok := gm.groups[group.Name]; ok {
|
||||||
return MsgGroupCreate{Code: 1, Error: "Name already exists!"}
|
return MsgGroupCreate{Code: 1, Error: "Name already exists!"}
|
||||||
}
|
}
|
||||||
gm.groups[group.Name] = group
|
gm.groups[group.Name] = group
|
||||||
gm.mu.Lock()
|
|
||||||
return MsgGroupCreate{}
|
return MsgGroupCreate{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gm *GroupManager) Update(group Group) MsgGroupCreate {
|
func (gm *GroupManager) Update(group Group) MsgGroupCreate {
|
||||||
defer gm.mu.Unlock()
|
defer gm.mu.Unlock()
|
||||||
|
gm.mu.Lock()
|
||||||
if _, ok := gm.groups[group.Name]; !ok {
|
if _, ok := gm.groups[group.Name]; !ok {
|
||||||
return MsgGroupCreate{Code: 1, Error: "Group not exists!"}
|
return MsgGroupCreate{Code: 1, Error: "Group not exists!"}
|
||||||
}
|
}
|
||||||
gm.groups[group.Name] = group
|
gm.groups[group.Name] = group
|
||||||
gm.mu.Lock()
|
|
||||||
return MsgGroupCreate{}
|
return MsgGroupCreate{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gm *GroupManager) Remove(group Group) MsgGroupCreate {
|
func (gm *GroupManager) Remove(group Group) MsgGroupCreate {
|
||||||
defer gm.mu.Unlock()
|
defer gm.mu.Unlock()
|
||||||
|
gm.mu.Lock()
|
||||||
if _, ok := gm.groups[group.Name]; !ok {
|
if _, ok := gm.groups[group.Name]; !ok {
|
||||||
return MsgGroupCreate{Code: 1, Error: "Group not exists!"}
|
return MsgGroupCreate{Code: 1, Error: "Group not exists!"}
|
||||||
}
|
}
|
||||||
delete(gm.groups, group.Name)
|
delete(gm.groups, group.Name)
|
||||||
gm.mu.Lock()
|
|
||||||
return MsgGroupCreate{}
|
return MsgGroupCreate{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gm *GroupManager) List() MsgGroupList {
|
func (gm *GroupManager) List() MsgGroupList {
|
||||||
defer gm.mu.Unlock()
|
defer gm.mu.Unlock()
|
||||||
|
gm.mu.Lock()
|
||||||
var result []Group
|
var result []Group
|
||||||
for _, v := range gm.groups {
|
for _, v := range gm.groups {
|
||||||
result = append(result, v)
|
result = append(result, v)
|
||||||
}
|
}
|
||||||
gm.mu.Lock()
|
|
||||||
return MsgGroupList{Groups: result}
|
return MsgGroupList{Groups: result}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ func serverAPI(w http.ResponseWriter, r *http.Request) {
|
|||||||
log.Debug("group_add")
|
log.Debug("group_add")
|
||||||
var group Group
|
var group Group
|
||||||
msg := MsgGroupCreate{Code: 0}
|
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 {
|
if err != nil {
|
||||||
msg.Code = 1
|
msg.Code = 1
|
||||||
msg.Error = err.Error()
|
msg.Error = err.Error()
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ type SchedulerFair struct {
|
|||||||
queue []Job
|
queue []Job
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
scheduling sync.Mutex
|
scheduling sync.Mutex
|
||||||
|
|
||||||
jobs map[string]*JobManager
|
jobs map[string]*JobManager
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
10
src/util.go
10
src/util.go
@@ -137,9 +137,13 @@ type Task struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Group struct {
|
type Group struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Weight int `json:"weight"`
|
Weight int `json:"weight"`
|
||||||
NumGPU int `json:"gpu_number"`
|
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 {
|
type MsgGroupCreate struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user