Skip to content

Commit

Permalink
change file storage, fix #412
Browse files Browse the repository at this point in the history
  • Loading branch information
ffdfgdfg committed Feb 18, 2020
1 parent 05c27b9 commit 876d3cc
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions lib/file/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,16 +99,28 @@ func (s *JsonDb) GetClient(id int) (c *Client, err error) {
return
}

var hostLock sync.Mutex

func (s *JsonDb) StoreHostToJsonFile() {
hostLock.Lock()
storeSyncMapToFile(s.Hosts, s.HostFilePath)
hostLock.Unlock()
}

var taskLock sync.Mutex

func (s *JsonDb) StoreTasksToJsonFile() {
taskLock.Lock()
storeSyncMapToFile(s.Tasks, s.TaskFilePath)
taskLock.Unlock()
}

var clientLock sync.Mutex

func (s *JsonDb) StoreClientsToJsonFile() {
clientLock.Lock()
storeSyncMapToFile(s.Clients, s.ClientFilePath)
clientLock.Unlock()
}

func (s *JsonDb) GetClientId() int32 {
Expand All @@ -134,7 +146,8 @@ func loadSyncMapFromFile(filePath string, f func(value string)) {
}

func storeSyncMapToFile(m sync.Map, filePath string) {
file, err := os.Create(filePath)
file, err := os.Create(filePath + ".tmp")
// first create a temporary file to store
if err != nil {
panic(err)
}
Expand Down Expand Up @@ -177,5 +190,7 @@ func storeSyncMapToFile(m sync.Map, filePath string) {
}
return true
})
file.Sync()
_ = file.Sync()
err = os.Rename(filePath+".tmp", filePath)
// replace the file, maybe provides atomic operation
}

0 comments on commit 876d3cc

Please sign in to comment.