mirror of
https://github.com/zrepl/zrepl.git
synced 2025-02-17 10:50:59 +01:00
issue 611: add debug logging that periodically dumps remaining time, from daemon's perspective
This commit is contained in:
parent
dc03db7423
commit
3cf48852e9
@ -203,16 +203,8 @@ func syncUp(a args, u updater) state {
|
|||||||
u(func(s *Snapper) {
|
u(func(s *Snapper) {
|
||||||
s.sleepUntil = syncPoint
|
s.sleepUntil = syncPoint
|
||||||
})
|
})
|
||||||
t := time.NewTimer(time.Until(syncPoint))
|
|
||||||
defer t.Stop()
|
return waitUntilThenTransitionToPlanning(a, u, syncPoint)
|
||||||
select {
|
|
||||||
case <-t.C:
|
|
||||||
return u(func(s *Snapper) {
|
|
||||||
s.state = Planning
|
|
||||||
}).sf()
|
|
||||||
case <-a.ctx.Done():
|
|
||||||
return onMainCtxDone(a.ctx, u)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func plan(a args, u updater) state {
|
func plan(a args, u updater) state {
|
||||||
@ -370,11 +362,26 @@ func wait(a args, u updater) state {
|
|||||||
logFunc("enter wait-state after error")
|
logFunc("enter wait-state after error")
|
||||||
})
|
})
|
||||||
|
|
||||||
t := time.NewTimer(time.Until(sleepUntil))
|
return waitUntilThenTransitionToPlanning(a, u, sleepUntil)
|
||||||
defer t.Stop()
|
}
|
||||||
|
|
||||||
|
func waitUntilThenTransitionToPlanning(a args, u updater, sleepUntil time.Time) state {
|
||||||
|
|
||||||
|
ticker := time.NewTicker(333 * time.Millisecond)
|
||||||
|
defer ticker.Stop()
|
||||||
|
lastLog := time.Now()
|
||||||
|
for {
|
||||||
select {
|
select {
|
||||||
case <-t.C:
|
case <-ticker.C:
|
||||||
|
now := time.Now()
|
||||||
|
if now.Before(sleepUntil) {
|
||||||
|
// rate limit loggin to once per minute
|
||||||
|
if (now.Sub(lastLog)) > envconst.Duration("ZREPL_SNAPPER_DEBUG_LOG_ISSUE_611", 1*time.Minute) {
|
||||||
|
getLogger(a.ctx).WithField("sleep_until", sleepUntil).WithField("remaining", sleepUntil.Sub(now)).Error("DEBUG-LOG-ZREPL-ISSUE-611")
|
||||||
|
lastLog = now
|
||||||
|
}
|
||||||
|
continue // continue with ticker
|
||||||
|
}
|
||||||
return u(func(snapper *Snapper) {
|
return u(func(snapper *Snapper) {
|
||||||
snapper.state = Planning
|
snapper.state = Planning
|
||||||
}).sf()
|
}).sf()
|
||||||
@ -382,6 +389,7 @@ func wait(a args, u updater) state {
|
|||||||
return onMainCtxDone(a.ctx, u)
|
return onMainCtxDone(a.ctx, u)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func listFSes(ctx context.Context, mf zfs.DatasetFilter) (fss []*zfs.DatasetPath, err error) {
|
func listFSes(ctx context.Context, mf zfs.DatasetFilter) (fss []*zfs.DatasetPath, err error) {
|
||||||
return zfs.ZFSListMapping(ctx, mf)
|
return zfs.ZFSListMapping(ctx, mf)
|
||||||
|
Loading…
Reference in New Issue
Block a user