Skip to content
This repository was archived by the owner on Aug 13, 2019. It is now read-only.

Commit 6f7a804

Browse files
author
Fabian Reinartz
committed
Fix close handling
Signed-off-by: Fabian Reinartz <[email protected]>
1 parent 18bcebb commit 6f7a804

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

wal.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,7 +1213,7 @@ func (r *walReader) decodeDeletes(flag byte, b []byte, res *[]Stone) error {
12131213
}
12141214

12151215
// MigrateWAL rewrites the deprecated write ahead log into the new format.
1216-
func MigrateWAL(logger log.Logger, dir string) error {
1216+
func MigrateWAL(logger log.Logger, dir string) (err error) {
12171217
// Detect whether we still have the old WAL.
12181218
fns, err := sequenceFiles(dir)
12191219
if err != nil && !os.IsNotExist(err) {
@@ -1227,6 +1227,8 @@ func MigrateWAL(logger log.Logger, dir string) error {
12271227
if err != nil {
12281228
return errors.Wrap(err, "check first existing segment")
12291229
}
1230+
defer f.Close()
1231+
12301232
var hdr [4]byte
12311233
if n, err := f.Read(hdr[:]); err != nil {
12321234
return errors.Wrap(err, "read header from first segment")
@@ -1247,10 +1249,20 @@ func MigrateWAL(logger log.Logger, dir string) error {
12471249
if err != nil {
12481250
return errors.Wrap(err, "open new WAL")
12491251
}
1252+
// We close it once already before as part of finalization.
1253+
// Do it once again in case of prior errors.
1254+
defer func() {
1255+
if err != nil {
1256+
repl.Close()
1257+
}
1258+
}()
1259+
12501260
w, err := OpenSegmentWAL(dir, logger, time.Minute, nil)
12511261
if err != nil {
12521262
return errors.Wrap(err, "open old WAL")
12531263
}
1264+
defer w.Close()
1265+
12541266
rdr := w.Reader()
12551267

12561268
var (
@@ -1283,9 +1295,6 @@ func MigrateWAL(logger log.Logger, dir string) error {
12831295
if err != nil {
12841296
return errors.Wrap(err, "write new entries")
12851297
}
1286-
if err := w.Close(); err != nil {
1287-
return errors.Wrap(err, "close old WAL")
1288-
}
12891298
if err := repl.Close(); err != nil {
12901299
return errors.Wrap(err, "close new WAL")
12911300
}

0 commit comments

Comments
 (0)