working workers in browser

This commit is contained in:
Barak Michener 2020-12-04 20:45:19 -08:00
parent 56116aea2a
commit 715f79c9c0
13 changed files with 343 additions and 28 deletions

View file

@ -2,7 +2,6 @@ package main
import (
"errors"
"fmt"
"sync"
"github.com/barakmich/tinkerbell/ray_rpc"
@ -43,11 +42,23 @@ func (wp *SimpleRRWorkerPool) Schedule(work *ray_rpc.Work) error {
if len(wp.workers) == 0 {
return errors.New("No workers available, try again later")
}
zap.S().Info("Sending work to worker", wp.offset)
wp.workers[wp.offset].AssignWork(work)
wp.offset++
if wp.offset == len(wp.workers) {
wp.offset = 0
origOffset := wp.offset
done := false
for !done {
worker := wp.workers[wp.offset]
if worker.Schedulable() {
zap.S().Info("Sending work to worker", wp.offset)
wp.workers[wp.offset].AssignWork(work)
done = true
}
wp.offset++
if wp.offset == len(wp.workers) {
wp.offset = 0
}
if wp.offset == origOffset && !done {
return errors.New("No workers schedulable")
}
}
return nil
}
@ -72,7 +83,6 @@ func (wp *SimpleRRWorkerPool) Close() error {
func (wp *SimpleRRWorkerPool) Deregister(worker Worker) error {
wp.Lock()
defer wp.Unlock()
fmt.Println("Deregistering worker")
found := false
for i, w := range wp.workers {
if w == worker {
@ -82,6 +92,7 @@ func (wp *SimpleRRWorkerPool) Deregister(worker Worker) error {
}
worker.Close()
found = true
zap.S().Info("Deregistering worker", i)
}
}
if !found {