working workers in browser
This commit is contained in:
parent
56116aea2a
commit
715f79c9c0
13 changed files with 343 additions and 28 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue