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

Reply via email to