| Index: build_scheduler/go/db/memory.go
|
| diff --git a/build_scheduler/go/db/memory.go b/build_scheduler/go/db/memory.go
|
| deleted file mode 100644
|
| index 183795f47ec37f2f128d2abe4a3533439dab4c20..0000000000000000000000000000000000000000
|
| --- a/build_scheduler/go/db/memory.go
|
| +++ /dev/null
|
| @@ -1,120 +0,0 @@
|
| -package db
|
| -
|
| -import (
|
| - "fmt"
|
| - "sort"
|
| - "sync"
|
| - "time"
|
| -
|
| - "go.skia.org/infra/go/util"
|
| -
|
| - "github.com/satori/go.uuid"
|
| - "github.com/skia-dev/glog"
|
| -)
|
| -
|
| -type inMemoryDB struct {
|
| - tasks map[string]*Task
|
| - tasksMtx sync.RWMutex
|
| - modTasks ModifiedTasks
|
| -}
|
| -
|
| -// See docs for DB interface. Does not take any locks.
|
| -func (db *inMemoryDB) AssignId(t *Task) error {
|
| - if t.Id != "" {
|
| - return fmt.Errorf("Task Id already assigned: %v", t.Id)
|
| - }
|
| - t.Id = uuid.NewV5(uuid.NewV1(), uuid.NewV4().String()).String()
|
| - return nil
|
| -}
|
| -
|
| -// See docs for DB interface.
|
| -func (db *inMemoryDB) Close() error {
|
| - return nil
|
| -}
|
| -
|
| -// See docs for DB interface.
|
| -func (db *inMemoryDB) GetTaskById(id string) (*Task, error) {
|
| - db.tasksMtx.RLock()
|
| - defer db.tasksMtx.RUnlock()
|
| - if task := db.tasks[id]; task != nil {
|
| - return task.Copy(), nil
|
| - }
|
| - return nil, nil
|
| -}
|
| -
|
| -// See docs for DB interface.
|
| -func (db *inMemoryDB) GetTasksFromDateRange(start, end time.Time) ([]*Task, error) {
|
| - db.tasksMtx.RLock()
|
| - defer db.tasksMtx.RUnlock()
|
| -
|
| - rv := []*Task{}
|
| - // TODO(borenet): Binary search.
|
| - for _, b := range db.tasks {
|
| - if (b.Created.Equal(start) || b.Created.After(start)) && b.Created.Before(end) {
|
| - rv = append(rv, b.Copy())
|
| - }
|
| - }
|
| - sort.Sort(TaskSlice(rv))
|
| - return rv, nil
|
| -}
|
| -
|
| -// See docs for DB interface.
|
| -func (db *inMemoryDB) GetModifiedTasks(id string) ([]*Task, error) {
|
| - return db.modTasks.GetModifiedTasks(id)
|
| -}
|
| -
|
| -// See docs for DB interface.
|
| -func (db *inMemoryDB) PutTask(task *Task) error {
|
| - db.tasksMtx.Lock()
|
| - defer db.tasksMtx.Unlock()
|
| -
|
| - if util.TimeIsZero(task.Created) {
|
| - return fmt.Errorf("Created not set. Task %s created time is %s. %v", task.Id, task.Created, task)
|
| - }
|
| -
|
| - if task.Id == "" {
|
| - if err := db.AssignId(task); err != nil {
|
| - return err
|
| - }
|
| - } else if existing := db.tasks[task.Id]; existing != nil {
|
| - if !existing.DbModified.Equal(task.DbModified) {
|
| - glog.Warningf("Cached Task has been modified in the DB. Current:\n%v\nCached:\n%v", existing, task)
|
| - return ErrConcurrentUpdate
|
| - }
|
| - }
|
| - task.DbModified = time.Now()
|
| -
|
| - // TODO(borenet): Keep tasks in a sorted slice.
|
| - db.tasks[task.Id] = task
|
| - db.modTasks.TrackModifiedTask(task)
|
| - return nil
|
| -}
|
| -
|
| -// See docs for DB interface.
|
| -func (db *inMemoryDB) PutTasks(tasks []*Task) error {
|
| - for _, t := range tasks {
|
| - if err := db.PutTask(t); err != nil {
|
| - return err
|
| - }
|
| - }
|
| - return nil
|
| -}
|
| -
|
| -// See docs for DB interface.
|
| -func (db *inMemoryDB) StartTrackingModifiedTasks() (string, error) {
|
| - return db.modTasks.StartTrackingModifiedTasks()
|
| -}
|
| -
|
| -// See docs for DB interface.
|
| -func (db *inMemoryDB) StopTrackingModifiedTasks(id string) {
|
| - db.modTasks.StopTrackingModifiedTasks(id)
|
| -}
|
| -
|
| -// NewInMemoryDB returns an extremely simple, inefficient, in-memory DB
|
| -// implementation.
|
| -func NewInMemoryDB() DB {
|
| - db := &inMemoryDB{
|
| - tasks: map[string]*Task{},
|
| - }
|
| - return db
|
| -}
|
|
|