projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into 14946-ruby-2.5
[arvados.git]
/
lib
/
dispatchcloud
/
scheduler
/
scheduler.go
diff --git
a/lib/dispatchcloud/scheduler/scheduler.go
b/lib/dispatchcloud/scheduler/scheduler.go
index 97cacee08f3e6c5ecfaf1701833f2bfe06fd4132..eb82c488390e3751fd7d3383acb1c1cf72af5e37 100644
(file)
--- a/
lib/dispatchcloud/scheduler/scheduler.go
+++ b/
lib/dispatchcloud/scheduler/scheduler.go
@@
-34,8
+34,9
@@
type Scheduler struct {
staleLockTimeout time.Duration
queueUpdateInterval time.Duration
staleLockTimeout time.Duration
queueUpdateInterval time.Duration
- locking map[string]bool
- mtx sync.Mutex
+ uuidOp map[string]string // operation in progress: "lock", "cancel", ...
+ mtx sync.Mutex
+ wakeup *time.Timer
runOnce sync.Once
stop chan struct{}
runOnce sync.Once
stop chan struct{}
@@
-53,9
+54,10
@@
func New(ctx context.Context, queue ContainerQueue, pool WorkerPool, staleLockTi
pool: pool,
staleLockTimeout: staleLockTimeout,
queueUpdateInterval: queueUpdateInterval,
pool: pool,
staleLockTimeout: staleLockTimeout,
queueUpdateInterval: queueUpdateInterval,
+ wakeup: time.NewTimer(time.Second),
stop: make(chan struct{}),
stopped: make(chan struct{}),
stop: make(chan struct{}),
stopped: make(chan struct{}),
-
locking: map[string]bool
{},
+
uuidOp: map[string]string
{},
}
}
}
}
@@
-116,6
+118,7
@@
func (sch *Scheduler) run() {
return
case <-queueNotify:
case <-poolNotify:
return
case <-queueNotify:
case <-poolNotify:
+ case <-sch.wakeup.C:
}
}
}
}
}
}