Skip to content

Commit 8e70c85

Browse files
authored
backport: ci: remove logger field from portforwarder to avoid race with goroutine (#2959) (#3264)
ci: remove logger field from portforwarder to avoid race with goroutine (#2959) * do not pass testing logger into goroutine to avoid race * fix port forwarder
1 parent 20dd164 commit 8e70c85

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

test/integration/k8s_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ func TestPodScaling(t *testing.T) {
195195
}
196196

197197
pingCheckFn := func() error {
198-
pf, err := NewPortForwarder(restConfig, t, pfOpts)
198+
pf, err := NewPortForwarder(restConfig, pfOpts)
199199
if err != nil {
200200
t.Fatalf("could not build port forwarder: %v", err)
201201
}

test/integration/portforward.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"io"
7+
"log"
78
"math/rand"
89
"net/http"
910
"sync"
@@ -26,7 +27,6 @@ type PortForwarder struct {
2627
clientset *kubernetes.Clientset
2728
transport http.RoundTripper
2829
upgrader spdy.Upgrader
29-
logger logger
3030

3131
opts PortForwardingOpts
3232

@@ -44,7 +44,7 @@ type PortForwardingOpts struct {
4444
}
4545

4646
// NewPortForwarder creates a PortForwarder.
47-
func NewPortForwarder(restConfig *rest.Config, logger logger, opts PortForwardingOpts) (*PortForwarder, error) {
47+
func NewPortForwarder(restConfig *rest.Config, opts PortForwardingOpts) (*PortForwarder, error) {
4848
clientset, err := kubernetes.NewForConfig(restConfig)
4949
if err != nil {
5050
return nil, fmt.Errorf("could not create clientset: %w", err)
@@ -59,7 +59,6 @@ func NewPortForwarder(restConfig *rest.Config, logger logger, opts PortForwardin
5959
clientset: clientset,
6060
transport: transport,
6161
upgrader: upgrader,
62-
logger: logger,
6362
opts: opts,
6463
stopChan: make(chan struct{}, 1),
6564
}, nil
@@ -156,7 +155,7 @@ func (p *PortForwarder) KeepAlive(ctx context.Context) {
156155
for {
157156
select {
158157
case <-ctx.Done():
159-
p.logger.Logf("port forwarder: keep alive cancelled: %v", ctx.Err())
158+
log.Printf("port forwarder: keep alive cancelled: %v", ctx.Err())
160159
return
161160
case pfErr := <-p.errChan:
162161
// as of client-go v0.26.1, if the connection is successful at first but then fails,
@@ -165,14 +164,14 @@ func (p *PortForwarder) KeepAlive(ctx context.Context) {
165164
//
166165
// see https://github.com/kubernetes/client-go/commit/d0842249d3b92ea67c446fe273f84fe74ebaed9f
167166
// for the relevant change.
168-
p.logger.Logf("port forwarder: received error signal: %v. restarting session", pfErr)
167+
log.Printf("port forwarder: received error signal: %v. restarting session", pfErr)
169168
p.Stop()
170169
if err := p.Forward(ctx); err != nil {
171-
p.logger.Logf("port forwarder: could not restart session: %v. retrying", err)
170+
log.Printf("port forwarder: could not restart session: %v. retrying", err)
172171

173172
select {
174173
case <-ctx.Done():
175-
p.logger.Logf("port forwarder: keep alive cancelled: %v", ctx.Err())
174+
log.Printf("port forwarder: keep alive cancelled: %v", ctx.Err())
176175
return
177176
case <-time.After(time.Second): // todo: make configurable?
178177
continue

0 commit comments

Comments
 (0)