mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
Fix close handling
Signed-off-by: Fabian Reinartz <freinartz@google.com>
This commit is contained in:
parent
1a5573b4ce
commit
92e1b20957
17
wal.go
17
wal.go
|
@ -1213,7 +1213,7 @@ func (r *walReader) decodeDeletes(flag byte, b []byte, res *[]Stone) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// MigrateWAL rewrites the deprecated write ahead log into the new format.
|
// MigrateWAL rewrites the deprecated write ahead log into the new format.
|
||||||
func MigrateWAL(logger log.Logger, dir string) error {
|
func MigrateWAL(logger log.Logger, dir string) (err error) {
|
||||||
// Detect whether we still have the old WAL.
|
// Detect whether we still have the old WAL.
|
||||||
fns, err := sequenceFiles(dir)
|
fns, err := sequenceFiles(dir)
|
||||||
if err != nil && !os.IsNotExist(err) {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
|
@ -1227,6 +1227,8 @@ func MigrateWAL(logger log.Logger, dir string) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "check first existing segment")
|
return errors.Wrap(err, "check first existing segment")
|
||||||
}
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
var hdr [4]byte
|
var hdr [4]byte
|
||||||
if n, err := f.Read(hdr[:]); err != nil {
|
if n, err := f.Read(hdr[:]); err != nil {
|
||||||
return errors.Wrap(err, "read header from first segment")
|
return errors.Wrap(err, "read header from first segment")
|
||||||
|
@ -1247,10 +1249,20 @@ func MigrateWAL(logger log.Logger, dir string) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "open new WAL")
|
return errors.Wrap(err, "open new WAL")
|
||||||
}
|
}
|
||||||
|
// We close it once already before as part of finalization.
|
||||||
|
// Do it once again in case of prior errors.
|
||||||
|
defer func() {
|
||||||
|
if err != nil {
|
||||||
|
repl.Close()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
w, err := OpenSegmentWAL(dir, logger, time.Minute, nil)
|
w, err := OpenSegmentWAL(dir, logger, time.Minute, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "open old WAL")
|
return errors.Wrap(err, "open old WAL")
|
||||||
}
|
}
|
||||||
|
defer w.Close()
|
||||||
|
|
||||||
rdr := w.Reader()
|
rdr := w.Reader()
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -1283,9 +1295,6 @@ func MigrateWAL(logger log.Logger, dir string) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "write new entries")
|
return errors.Wrap(err, "write new entries")
|
||||||
}
|
}
|
||||||
if err := w.Close(); err != nil {
|
|
||||||
return errors.Wrap(err, "close old WAL")
|
|
||||||
}
|
|
||||||
if err := repl.Close(); err != nil {
|
if err := repl.Close(); err != nil {
|
||||||
return errors.Wrap(err, "close new WAL")
|
return errors.Wrap(err, "close new WAL")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue