atomic file write fix
This commit is contained in:
parent
6020223e85
commit
626a68e670
10
common/os.go
10
common/os.go
|
@ -43,12 +43,14 @@ func AtomicWriteFile(filePath string, newBytes []byte) error {
|
||||||
return fmt.Errorf("Failed to write file %v. %v", filePath+".bak", err)
|
return fmt.Errorf("Failed to write file %v. %v", filePath+".bak", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Write newBytes to filePath.
|
// Write newBytes to filePath.new
|
||||||
err := ioutil.WriteFile(filePath, newBytes, 0600)
|
err := ioutil.WriteFile(filePath+".new", newBytes, 0600)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Failed to write file %v. %v", filePath, err)
|
return fmt.Errorf("Failed to write file %v. %v", filePath+".new", err)
|
||||||
}
|
}
|
||||||
return nil
|
// Move filePath.new to filePath
|
||||||
|
err = os.Rename(filePath+".new", filePath)
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func EnsureDir(dir string) error {
|
func EnsureDir(dir string) error {
|
||||||
|
|
|
@ -241,6 +241,8 @@ func BenchmarkImmutableAvlTree(b *testing.B) {
|
||||||
b.StopTimer()
|
b.StopTimer()
|
||||||
|
|
||||||
t := NewIAVLTree(binary.BasicCodec, binary.BasicCodec, 0, nil)
|
t := NewIAVLTree(binary.BasicCodec, binary.BasicCodec, 0, nil)
|
||||||
|
// 23000ns/op, 43000ops/s
|
||||||
|
// for i := 0; i < 10000000; i++ {
|
||||||
for i := 0; i < 1000000; i++ {
|
for i := 0; i < 1000000; i++ {
|
||||||
t.Set(RandUint64(), "")
|
t.Set(RandUint64(), "")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue