@@ -39,60 +39,49 @@ func getDefaultFileSize() int64 {
39
39
// it triggers the compact routine
40
40
// creates a new archive file and save it disk
41
41
func Compact (w * Wal ) error {
42
- errCh := make (chan error )
43
- done := make (chan struct {})
44
- go func () {
45
- for {
46
- <- ticker
47
- // check existing wal file size
48
- walInfo , err := getWalFileInfo (w .fileName .fileName )
42
+ for {
43
+ <- ticker
44
+ // check existing wal file size
45
+ walInfo , err := getWalFileInfo (w .fileName .fileName )
46
+ if err != nil {
47
+ fmt .Fprintf (os .Stderr , "error:[%v] getting wal file size" , err )
48
+ return err
49
+ }
50
+ if walInfo .Size () > defaultMaxFileSize {
51
+ fmt .Fprintf (os .Stdout ,
52
+ "[info]: start compacting:%s\n " , walInfo .Name ())
53
+ // create swap file replace wal file
54
+ exisitingFile , err := swapWalFile (w )
55
+ if err != nil {
56
+ return err
57
+ }
58
+ // create archive file
59
+ archive , err := createArchive (w .archiveFileName )
60
+ if err != nil {
61
+ return err
62
+ }
63
+ // get file info for existing file
64
+ f , err := os .OpenFile (exisitingFile , os .O_RDONLY , fs .FileMode (os .O_RDONLY ))
49
65
if err != nil {
50
- fmt .Fprintf (os .Stderr , "error:[%v] getting wal file size" , err )
51
- errCh <- err
66
+ return err
52
67
}
53
- if walInfo .Size () > defaultMaxFileSize {
54
- fmt .Fprintf (os .Stdout ,
55
- "[info]: start compacting:%s\n " , walInfo .Name ())
56
- // create swap file replace wal file
57
- exisitingFile , err := swapWalFile (w )
58
- if err != nil {
59
- errCh <- err
60
- }
61
- // create archive file
62
- archive , err := createArchive (w .archiveFileName )
63
- if err != nil {
64
- errCh <- err
65
- }
66
- // get file info for existing file
67
- f , err := os .OpenFile (exisitingFile , os .O_RDONLY , fs .FileMode (os .O_RDONLY ))
68
- if err != nil {
69
- errCh <- err
70
- }
71
- fInfo , err := f .Stat ()
72
- if err != nil {
73
- errCh <- err
74
- }
75
- // archive the wal file
76
- if err := writeToArchive (archive , f , fInfo ); err != nil {
77
- errCh <- err
78
- }
79
- // close the file
80
- if err := f .Close (); err != nil {
81
- errCh <- err
82
- }
83
- // remove old wal file
84
- if err := os .Remove (exisitingFile ); err != nil {
85
- errCh <- err
86
- }
68
+ fInfo , err := f .Stat ()
69
+ if err != nil {
70
+ return err
71
+ }
72
+ // archive the wal file
73
+ if err := writeToArchive (archive , f , fInfo ); err != nil {
74
+ return err
75
+ }
76
+ // close the file
77
+ if err := f .Close (); err != nil {
78
+ return err
79
+ }
80
+ // remove old wal file
81
+ if err := os .Remove (exisitingFile ); err != nil {
82
+ return err
87
83
}
88
- done <- struct {}{}
89
84
}
90
- }()
91
- select {
92
- case e := <- errCh :
93
- return e
94
- case <- done :
95
- return nil
96
85
}
97
86
}
98
87
0 commit comments