Skip to content

Commit 609e6ee

Browse files
authored
backport: ci: remove logger field from portforwarder to avoid race with goroutine (#2959) (#2975)
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 a68d21a commit 609e6ee

File tree

5 files changed

+10
-17
lines changed

5 files changed

+10
-17
lines changed

test/e2e/framework/kubernetes/port-forward.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func (p *PortForward) Run() error {
8686

8787
log.Printf("attempting port forward to pod name \"%s\" with label \"%s\", in namespace \"%s\"...\n", targetPodName, p.LabelSelector, p.Namespace)
8888

89-
p.pf, err = k8s.NewPortForwarder(config, &logger{}, opts)
89+
p.pf, err = k8s.NewPortForwarder(config, opts)
9090
if err != nil {
9191
return fmt.Errorf("could not create port forwarder: %w", err)
9292
}
@@ -161,9 +161,3 @@ func (p *PortForward) Stop() error {
161161
p.pf.Stop()
162162
return nil
163163
}
164-
165-
type logger struct{}
166-
167-
func (l *logger) Logf(format string, args ...interface{}) {
168-
log.Printf(format, args...)
169-
}

test/integration/datapath/datapath_linux_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ func TestDatapathLinux(t *testing.T) {
221221
DestPort: 8080,
222222
}
223223

224-
pf, err := k8s.NewPortForwarder(restConfig, t, pfOpts)
224+
pf, err := k8s.NewPortForwarder(restConfig, pfOpts)
225225
if err != nil {
226226
t.Fatal(err)
227227
}

test/integration/k8s_test.go

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

176176
pingCheckFn := func() error {
177-
pf, err := NewPortForwarder(restConfig, t, pfOpts)
177+
pf, err := NewPortForwarder(restConfig, pfOpts)
178178
if err != nil {
179179
t.Fatalf("could not build port forwarder: %v", err)
180180
}

test/integration/networkobservability/hubble_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ func TestEndpoints(t *testing.T) {
220220
defer cancel()
221221
pingCheckFn := func() error {
222222
var pf *k8s.PortForwarder
223-
pf, err := k8s.NewPortForwarder(config, t, k8s.PortForwardingOpts{
223+
pf, err := k8s.NewPortForwarder(config, k8s.PortForwardingOpts{
224224
Namespace: namespace,
225225
LabelSelector: labelSelector,
226226
LocalPort: 9965,

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

@@ -45,7 +45,7 @@ type PortForwardingOpts struct {
4545
}
4646

4747
// NewPortForwarder creates a PortForwarder.
48-
func NewPortForwarder(restConfig *rest.Config, logger logger, opts PortForwardingOpts) (*PortForwarder, error) {
48+
func NewPortForwarder(restConfig *rest.Config, opts PortForwardingOpts) (*PortForwarder, error) {
4949
clientset, err := kubernetes.NewForConfig(restConfig)
5050
if err != nil {
5151
return nil, fmt.Errorf("could not create clientset: %w", err)
@@ -60,7 +60,6 @@ func NewPortForwarder(restConfig *rest.Config, logger logger, opts PortForwardin
6060
clientset: clientset,
6161
transport: transport,
6262
upgrader: upgrader,
63-
logger: logger,
6463
opts: opts,
6564
stopChan: make(chan struct{}, 1),
6665
}, nil
@@ -173,7 +172,7 @@ func (p *PortForwarder) KeepAlive(ctx context.Context) {
173172
for {
174173
select {
175174
case <-ctx.Done():
176-
p.logger.Logf("port forwarder: keep alive cancelled: %v", ctx.Err())
175+
log.Printf("port forwarder: keep alive cancelled: %v", ctx.Err())
177176
return
178177
case pfErr := <-p.errChan:
179178
// as of client-go v0.26.1, if the connection is successful at first but then fails,
@@ -182,14 +181,14 @@ func (p *PortForwarder) KeepAlive(ctx context.Context) {
182181
//
183182
// see https://github.com/kubernetes/client-go/commit/d0842249d3b92ea67c446fe273f84fe74ebaed9f
184183
// for the relevant change.
185-
p.logger.Logf("port forwarder: received error signal: %v. restarting session", pfErr)
184+
log.Printf("port forwarder: received error signal: %v. restarting session", pfErr)
186185
p.Stop()
187186
if err := p.Forward(ctx); err != nil {
188-
p.logger.Logf("port forwarder: could not restart session: %v. retrying", err)
187+
log.Printf("port forwarder: could not restart session: %v. retrying", err)
189188

190189
select {
191190
case <-ctx.Done():
192-
p.logger.Logf("port forwarder: keep alive cancelled: %v", ctx.Err())
191+
log.Printf("port forwarder: keep alive cancelled: %v", ctx.Err())
193192
return
194193
case <-time.After(time.Second): // todo: make configurable?
195194
continue

0 commit comments

Comments
 (0)