fix: use full Lock in State.Save() to prevent data race (closes #17)
Some checks failed
Check / check (pull_request) Failing after 5m31s
Some checks failed
Check / check (pull_request) Failing after 5m31s
State.Save() was using RLock but mutating s.snapshot.LastUpdated, which is a write operation. This created a data race since other goroutines could also hold a read lock and observe a partially written timestamp. Changed to full Lock to ensure exclusive access during the mutation.
This commit is contained in:
parent
622acdb494
commit
b162ca743b
@ -156,8 +156,8 @@ func (s *State) Load() error {
|
|||||||
|
|
||||||
// Save writes the current state to disk atomically.
|
// Save writes the current state to disk atomically.
|
||||||
func (s *State) Save() error {
|
func (s *State) Save() error {
|
||||||
s.mu.RLock()
|
s.mu.Lock()
|
||||||
defer s.mu.RUnlock()
|
defer s.mu.Unlock()
|
||||||
|
|
||||||
s.snapshot.LastUpdated = time.Now().UTC()
|
s.snapshot.LastUpdated = time.Now().UTC()
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user