Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kubevirt for openSUSE:Factory checked in at 2023-08-03 17:29:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kubevirt (Old) and /work/SRC/openSUSE:Factory/.kubevirt.new.22712 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kubevirt" Thu Aug 3 17:29:22 2023 rev:62 rq:1102120 version:1.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kubevirt/kubevirt.changes 2023-08-01 15:38:52.397947905 +0200 +++ /work/SRC/openSUSE:Factory/.kubevirt.new.22712/kubevirt.changes 2023-08-03 17:29:23.599621850 +0200 @@ -1,0 +2,6 @@ +Thu Aug 3 06:27:57 UTC 2023 - Vasily Ulyanov <vasily.ulya...@suse.com> + +- Fix leaking tickers + 0008-fix-ticker-leak.patch + +------------------------------------------------------------------- New: ---- 0008-fix-ticker-leak.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kubevirt.spec ++++++ --- /var/tmp/diff_new_pack.YcshqS/_old 2023-08-03 17:29:24.463627079 +0200 +++ /var/tmp/diff_new_pack.YcshqS/_new 2023-08-03 17:29:24.467627104 +0200 @@ -35,6 +35,7 @@ Patch5: 0005-Support-multiple-watchdogs-in-the-domain-schema.patch Patch6: 0006-isolation-close-file-when-exits.patch Patch7: 0007-Fix-volume-detach-on-hotplug-attachment-pod-delete.patch +Patch8: 0008-fix-ticker-leak.patch BuildRequires: glibc-devel-static BuildRequires: golang-packaging BuildRequires: pkgconfig ++++++ 0008-fix-ticker-leak.patch ++++++ >From f18f0988669908b4bdc5c4152fc7f5863d5ef3cd Mon Sep 17 00:00:00 2001 From: rokkiter <101091030+rokki...@users.noreply.github.com> Date: Mon, 31 Jul 2023 16:51:08 +0800 Subject: [PATCH 1/2] fix ticker leak Signed-off-by: rokkiter <101091030+rokki...@users.noreply.github.com> --- cmd/virt-launcher/virt-launcher.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cmd/virt-launcher/virt-launcher.go b/cmd/virt-launcher/virt-launcher.go index e8d7c553f..c682c1bc6 100644 --- a/cmd/virt-launcher/virt-launcher.go +++ b/cmd/virt-launcher/virt-launcher.go @@ -237,14 +237,18 @@ func detectDomainWithUUID(domainManager virtwrap.DomainManager) *api.Domain { func waitForDomainUUID(timeout time.Duration, events chan watch.Event, stop chan struct{}, domainManager virtwrap.DomainManager) *api.Domain { - ticker := time.NewTicker(timeout).C - checkEarlyExit := time.NewTicker(time.Second * 2).C - domainCheckTicker := time.NewTicker(time.Second * 10).C + ticker := time.NewTicker(timeout) + defer ticker.Stop() + checkEarlyExit := time.NewTicker(time.Second * 2) + defer checkEarlyExit.Stop() + domainCheckTicker := time.NewTicker(time.Second * 10) + defer domainCheckTicker.Stop() + for { select { - case <-ticker: + case <-ticker.C: panic(fmt.Errorf("timed out waiting for domain to be defined")) - case <-domainCheckTicker: + case <-domainCheckTicker.C: log.Log.V(3).Infof("Periodically checking for domain with UUID") domain := detectDomainWithUUID(domainManager) if domain != nil { @@ -258,7 +262,7 @@ func waitForDomainUUID(timeout time.Duration, events chan watch.Event, stop chan } case <-stop: return nil - case <-checkEarlyExit: + case <-checkEarlyExit.C: if cmdserver.ReceivedEarlyExitSignal() { panic(fmt.Errorf("received early exit signal")) } -- 2.41.0 >From e8941fad18234293e10fd3b968491bc4d22a6c09 Mon Sep 17 00:00:00 2001 From: rokkiter <101091030+rokki...@users.noreply.github.com> Date: Wed, 2 Aug 2023 10:18:39 +0800 Subject: [PATCH 2/2] fix ticker leak Signed-off-by: rokkiter <101091030+rokki...@users.noreply.github.com> --- pkg/monitoring/domainstats/downwardmetrics/scraper.go | 1 + pkg/virt-handler/retry_manager.go | 1 + pkg/virt-launcher/monitor.go | 3 +-- pkg/virt-launcher/virtwrap/agent-poller/agent_poller.go | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/monitoring/domainstats/downwardmetrics/scraper.go b/pkg/monitoring/domainstats/downwardmetrics/scraper.go index 8ca6ae4c3..1ca2465cf 100644 --- a/pkg/monitoring/domainstats/downwardmetrics/scraper.go +++ b/pkg/monitoring/domainstats/downwardmetrics/scraper.go @@ -149,6 +149,7 @@ func RunDownwardMetricsCollector(context context.Context, nodeName string, vmiIn go func() { ticker := time.NewTicker(DownwardmetricsRefreshDuration) + defer ticker.Stop() for { select { case <-ticker.C: diff --git a/pkg/virt-handler/retry_manager.go b/pkg/virt-handler/retry_manager.go index dc14fb66d..ba549a157 100644 --- a/pkg/virt-handler/retry_manager.go +++ b/pkg/virt-handler/retry_manager.go @@ -145,6 +145,7 @@ func (f *FailRetryManager) ShouldDelay(key string, isFailure func() bool) (bool, // Run starts the manager. func (f *FailRetryManager) Run(stopCh chan struct{}) { ticker := time.NewTicker(f.maxWait) + defer ticker.Stop() for { select { case <-ticker.C: diff --git a/pkg/virt-launcher/monitor.go b/pkg/virt-launcher/monitor.go index 6620ac4df..d82c5c669 100644 --- a/pkg/virt-launcher/monitor.go +++ b/pkg/virt-launcher/monitor.go @@ -181,7 +181,7 @@ func (mon *monitor) monitorLoop(startTimeout time.Duration, signalStopChan chan log.Log.Infof("Monitoring loop: rate %v start timeout %s", rate, timeoutRepr) ticker := time.NewTicker(rate) - + defer ticker.Stop() mon.isDone = false mon.timeout = startTimeout mon.start = time.Now() @@ -200,7 +200,6 @@ func (mon *monitor) monitorLoop(startTimeout time.Duration, signalStopChan chan } } - ticker.Stop() } func (mon *monitor) RunForever(startTimeout time.Duration, signalStopChan chan struct{}) { diff --git a/pkg/virt-launcher/virtwrap/agent-poller/agent_poller.go b/pkg/virt-launcher/virtwrap/agent-poller/agent_poller.go index 83265f3e5..ba681b204 100644 --- a/pkg/virt-launcher/virtwrap/agent-poller/agent_poller.go +++ b/pkg/virt-launcher/virtwrap/agent-poller/agent_poller.go @@ -243,10 +243,10 @@ func (p *PollerWorker) Poll(execAgentCommands agentCommandsExecutor, closeChan c } ticker := time.NewTicker(pollInterval) + defer ticker.Stop() for { select { case <-closeChan: - ticker.Stop() return case <-ticker.C: execAgentCommands(p.AgentCommands) -- 2.41.0