Skip to content

Commit 70ece7c

Browse files
committed
fix(compact): reduce complexity
1 parent 2b5654b commit 70ece7c

File tree

1 file changed

+39
-50
lines changed

1 file changed

+39
-50
lines changed

wal/compact.go

+39-50
Original file line numberDiff line numberDiff line change
@@ -39,60 +39,49 @@ func getDefaultFileSize() int64 {
3939
// it triggers the compact routine
4040
// creates a new archive file and save it disk
4141
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))
4965
if err != nil {
50-
fmt.Fprintf(os.Stderr, "error:[%v] getting wal file size", err)
51-
errCh <- err
66+
return err
5267
}
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
8783
}
88-
done <- struct{}{}
8984
}
90-
}()
91-
select {
92-
case e := <-errCh:
93-
return e
94-
case <-done:
95-
return nil
9685
}
9786
}
9887

0 commit comments

Comments
 (0)