diff --git a/disk-storage.go b/disk-storage.go index ada0c56..874a580 100644 --- a/disk-storage.go +++ b/disk-storage.go @@ -2,8 +2,6 @@ package main import ( "encoding/gob" - "fmt" - "os" "time" ) @@ -23,48 +21,48 @@ func NewDiskStorage(stateFile string) (*DiskStorage, error) { stateFile: stateFile, LastSaves: make(map[uint64]int64), } - err := ret.loadState() - return ret, err + //err := ret.loadState() + return ret, nil } -func saveMessages(_ interface{}, _ CartId) error { - // No-op: legacy event log persistence removed in oneof refactor. - return nil -} +// func saveMessages(_ interface{}, _ CartId) error { +// // No-op: legacy event log persistence removed in oneof refactor. +// return nil +// } -func getCartPath(id string) string { - return fmt.Sprintf("data/%s.prot", id) -} +// func getCartPath(id string) string { +// return fmt.Sprintf("data/%s.prot", id) +// } -func loadMessages(_ Grain, _ CartId) error { - // No-op: legacy replay removed in oneof refactor. - return nil -} +// func loadMessages(_ Grain, _ CartId) error { +// // No-op: legacy replay removed in oneof refactor. +// return nil +// } -func (s *DiskStorage) saveState() error { - tmpFile := s.stateFile + "_tmp" - file, err := os.Create(tmpFile) - if err != nil { - return err - } - defer file.Close() - err = gob.NewEncoder(file).Encode(s.LastSaves) - if err != nil { - return err - } - os.Remove(s.stateFile + ".bak") - os.Rename(s.stateFile, s.stateFile+".bak") - return os.Rename(tmpFile, s.stateFile) -} +// func (s *DiskStorage) saveState() error { +// tmpFile := s.stateFile + "_tmp" +// file, err := os.Create(tmpFile) +// if err != nil { +// return err +// } +// defer file.Close() +// err = gob.NewEncoder(file).Encode(s.LastSaves) +// if err != nil { +// return err +// } +// os.Remove(s.stateFile + ".bak") +// os.Rename(s.stateFile, s.stateFile+".bak") +// return os.Rename(tmpFile, s.stateFile) +// } -func (s *DiskStorage) loadState() error { - file, err := os.Open(s.stateFile) - if err != nil { - return err - } - defer file.Close() - return gob.NewDecoder(file).Decode(&s.LastSaves) -} +// func (s *DiskStorage) loadState() error { +// file, err := os.Open(s.stateFile) +// if err != nil { +// return err +// } +// defer file.Close() +// return gob.NewDecoder(file).Decode(&s.LastSaves) +// } func (s *DiskStorage) Store(id CartId, _ *CartGrain) error { // With the removal of the legacy message log, we only update the timestamp. diff --git a/main.go b/main.go index dd9f4fa..cf7426b 100644 --- a/main.go +++ b/main.go @@ -49,10 +49,10 @@ func spawn(id CartId) (*CartGrain, error) { ret.lastChange = time.Now().Unix() // Legacy loadMessages (no-op) retained; then replay append-only event log - _ = loadMessages(ret, id) - _ = ReplayCartEvents(ret, id) + //_ = loadMessages(ret, id) + err := ReplayCartEvents(ret, id) - return ret, nil + return ret, err } func init() { @@ -65,7 +65,7 @@ type App struct { } func (a *App) Save() error { - hasChanges := false + a.pool.mu.RLock() defer a.pool.mu.RUnlock() for id, grain := range a.pool.GetGrains() { @@ -73,7 +73,7 @@ func (a *App) Save() error { continue } if grain.GetLastChange() > a.storage.LastSaves[uint64(id)] { - hasChanges = true + err := a.storage.Store(id, grain) if err != nil { log.Printf("Error saving grain %s: %v\n", id, err) @@ -81,10 +81,8 @@ func (a *App) Save() error { } } - if !hasChanges { - return nil - } - return a.storage.saveState() + return nil + } func (a *App) HandleSave(w http.ResponseWriter, r *http.Request) {