[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