frontend: show submittable status and URL, add runner, revamp logging
This commit is contained in:
parent
43f8205e85
commit
057294830e
7 changed files with 186 additions and 56 deletions
60
submitqueue/runner.go
Normal file
60
submitqueue/runner.go
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
package submitqueue
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Runner supervises the submit queue and records historical data about it
|
||||
type Runner struct {
|
||||
mut sync.Mutex
|
||||
submitQueue *SubmitQueue
|
||||
currentlyRunning *time.Time
|
||||
results []*Result
|
||||
}
|
||||
|
||||
func NewRunner(sq *SubmitQueue) *Runner {
|
||||
return &Runner{
|
||||
submitQueue: sq,
|
||||
results: []*Result{},
|
||||
}
|
||||
}
|
||||
|
||||
// For the frontend to consume the data
|
||||
// TODO: extend to return all the submitQueue results
|
||||
func (r *Runner) GetResults() (*time.Time, []*Result) {
|
||||
r.mut.Lock()
|
||||
defer r.mut.Unlock()
|
||||
return r.currentlyRunning, r.results
|
||||
}
|
||||
|
||||
// Trigger starts a new batch job
|
||||
// TODO: make sure only one batch job is started at the same time
|
||||
// if a batch job is already started, ignore the newest request
|
||||
// TODO: be more granular in dry-run mode
|
||||
func (r *Runner) Trigger(fetchOnly bool) {
|
||||
r.mut.Lock()
|
||||
if r.currentlyRunning != nil {
|
||||
return
|
||||
}
|
||||
now := time.Now()
|
||||
r.currentlyRunning = &now
|
||||
r.mut.Unlock()
|
||||
|
||||
defer func() {
|
||||
r.mut.Lock()
|
||||
r.currentlyRunning = nil
|
||||
r.mut.Unlock()
|
||||
}()
|
||||
|
||||
result := r.submitQueue.Run(fetchOnly)
|
||||
|
||||
r.mut.Lock()
|
||||
// drop tail if size > 10
|
||||
if len(r.results) > 10 {
|
||||
r.results = append([]*Result{result}, r.results[:9]...)
|
||||
} else {
|
||||
r.results = append([]*Result{result}, r.results...)
|
||||
}
|
||||
r.mut.Unlock()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue