[XAPID-377] Fixed a bug in crash recovery and how we write to a file
diff --git a/buffering_manager.go b/buffering_manager.go
index ceb011e..243409d 100644
--- a/buffering_manager.go
+++ b/buffering_manager.go
@@ -114,7 +114,6 @@
}
}
-//TODO: implement 4 digit hext method
func getRandomHex() string {
buff := make([]byte, 2)
rand.Read(buff)
@@ -141,6 +140,7 @@
(fw.bw).WriteString("\n")
}
fw.bw.Flush()
+ fw.gw.Flush()
}
func closeGzipFile(fw fileWriter) {
diff --git a/crash_recovery.go b/crash_recovery.go
index 971270d..f6793fd 100644
--- a/crash_recovery.go
+++ b/crash_recovery.go
@@ -134,23 +134,23 @@
scanner := bufio.NewScanner(gzReader)
// Create new file to copy complete records from partial file and upload only a complete file
- recoveredFile, err := os.Create(recoveredFilePath)
+ recoveredFile, err := os.OpenFile(recoveredFilePath, os.O_WRONLY|os.O_CREATE, os.ModePerm)
if err != nil {
log.Errorf("Cannot create recovered file: %s", recoveredFilePath)
return
}
defer recoveredFile.Close()
- bufWriter := bufio.NewWriter(recoveredFile)
- defer bufWriter.Flush()
-
- gzWriter := gzip.NewWriter(bufWriter)
+ gzWriter := gzip.NewWriter(recoveredFile)
defer gzWriter.Close()
- for scanner.Scan() {
- gzWriter.Write(scanner.Bytes())
- }
+ bufWriter := bufio.NewWriter(gzWriter)
+ defer bufWriter.Flush()
+ for scanner.Scan() {
+ bufWriter.Write(scanner.Bytes())
+ bufWriter.WriteString("\n")
+ }
if err := scanner.Err(); err != nil {
log.Errorf("Error while scanning partial file: %v", err)
return