Commit 1c45884f authored by Tommi Virtanen's avatar Tommi Virtanen

Sync flatfs data file and containing directory in Put

Sadly untestable without low-level fault injection or extensive
mocking.
parent 2816aed9
...@@ -101,6 +101,12 @@ func (fs *Datastore) Put(key datastore.Key, value interface{}) error { ...@@ -101,6 +101,12 @@ func (fs *Datastore) Put(key datastore.Key, value interface{}) error {
return err return err
} }
dirF, err := os.Open(dir)
if err != nil {
return err
}
defer dirF.Close()
tmp, err := ioutil.TempFile(dir, "put-") tmp, err := ioutil.TempFile(dir, "put-")
if err != nil { if err != nil {
return err return err
...@@ -121,6 +127,9 @@ func (fs *Datastore) Put(key datastore.Key, value interface{}) error { ...@@ -121,6 +127,9 @@ func (fs *Datastore) Put(key datastore.Key, value interface{}) error {
if _, err := tmp.Write(val); err != nil { if _, err := tmp.Write(val); err != nil {
return err return err
} }
if err := tmp.Sync(); err != nil {
return err
}
if err := tmp.Close(); err != nil { if err := tmp.Close(); err != nil {
return err return err
} }
...@@ -132,6 +141,10 @@ func (fs *Datastore) Put(key datastore.Key, value interface{}) error { ...@@ -132,6 +141,10 @@ func (fs *Datastore) Put(key datastore.Key, value interface{}) error {
} }
removed = true removed = true
if err := dirF.Sync(); err != nil {
return err
}
return nil return nil
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment