From edf5c8cd6d5a34586440f85de28d140488152296 Mon Sep 17 00:00:00 2001 From: "M. Mert Yildiran" Date: Sun, 22 Jan 2023 05:04:44 +0300 Subject: [PATCH] :zap: Don't call `cancel()` in case of a proxy/port-forward error --- cmd/common.go | 9 +++------ cmd/proxyRunner.go | 2 -- cmd/tapRunner.go | 2 -- kubernetes/proxy.go | 8 ++++---- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/cmd/common.go b/cmd/common.go index 85b54699b..52b4c3cc3 100644 --- a/cmd/common.go +++ b/cmd/common.go @@ -18,13 +18,12 @@ import ( "github.com/rs/zerolog/log" ) -func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, ctx context.Context, cancel context.CancelFunc, serviceName string, podName string, proxyPortLabel string, srcPort uint16, dstPort uint16, healthCheck string) { - httpServer, err := kubernetes.StartProxy(kubernetesProvider, config.Config.Tap.Proxy.Host, srcPort, config.Config.SelfNamespace, serviceName, cancel) +func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, ctx context.Context, serviceName string, podName string, proxyPortLabel string, srcPort uint16, dstPort uint16, healthCheck string) { + httpServer, err := kubernetes.StartProxy(kubernetesProvider, config.Config.Tap.Proxy.Host, srcPort, config.Config.SelfNamespace, serviceName) if err != nil { log.Error(). Err(errormessage.FormatError(err)). Msg(fmt.Sprintf("Error occured while running K8s proxy. Try setting different port using --%s", proxyPortLabel)) - cancel() return } @@ -40,12 +39,11 @@ func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, ctx con } podRegex, _ := regexp.Compile(podName) - if _, err := kubernetes.NewPortForward(kubernetesProvider, config.Config.SelfNamespace, podRegex, srcPort, dstPort, ctx, cancel); err != nil { + if _, err := kubernetes.NewPortForward(kubernetesProvider, config.Config.SelfNamespace, podRegex, srcPort, dstPort, ctx); err != nil { log.Error(). Str("pod-regex", podRegex.String()). Err(errormessage.FormatError(err)). Msg(fmt.Sprintf("Error occured while running port forward. Try setting different port using --%s", proxyPortLabel)) - cancel() return } @@ -55,7 +53,6 @@ func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, ctx con Str("service", serviceName). Err(errormessage.FormatError(err)). Msg("Couldn't connect to service.") - cancel() return } } diff --git a/cmd/proxyRunner.go b/cmd/proxyRunner.go index 64da180f6..2835715d0 100644 --- a/cmd/proxyRunner.go +++ b/cmd/proxyRunner.go @@ -76,7 +76,6 @@ func runProxy() { startProxyReportErrorIfAny( kubernetesProvider, ctx, - cancel, kubernetes.HubServiceName, kubernetes.HubPodName, configStructs.ProxyHubPortLabel, @@ -107,7 +106,6 @@ func runProxy() { startProxyReportErrorIfAny( kubernetesProvider, ctx, - cancel, kubernetes.FrontServiceName, kubernetes.FrontPodName, configStructs.ProxyFrontPortLabel, diff --git a/cmd/tapRunner.go b/cmd/tapRunner.go index 3f7d29c70..ccf5a015f 100644 --- a/cmd/tapRunner.go +++ b/cmd/tapRunner.go @@ -369,7 +369,6 @@ func postHubStarted(ctx context.Context, kubernetesProvider *kubernetes.Provider startProxyReportErrorIfAny( kubernetesProvider, ctx, - cancel, kubernetes.HubServiceName, kubernetes.HubPodName, configStructs.ProxyHubPortLabel, @@ -404,7 +403,6 @@ func postFrontStarted(ctx context.Context, kubernetesProvider *kubernetes.Provid startProxyReportErrorIfAny( kubernetesProvider, ctx, - cancel, kubernetes.FrontServiceName, kubernetes.FrontPodName, configStructs.ProxyFrontPortLabel, diff --git a/kubernetes/proxy.go b/kubernetes/proxy.go index 9d39aa5c1..172c18ee0 100644 --- a/kubernetes/proxy.go +++ b/kubernetes/proxy.go @@ -21,7 +21,7 @@ import ( const k8sProxyApiPrefix = "/" const selfServicePort = 80 -func StartProxy(kubernetesProvider *Provider, proxyHost string, srcPort uint16, selfNamespace string, selfServiceName string, cancel context.CancelFunc) (*http.Server, error) { +func StartProxy(kubernetesProvider *Provider, proxyHost string, srcPort uint16, selfNamespace string, selfServiceName string) (*http.Server, error) { log.Info(). Str("namespace", selfNamespace). Str("service", selfServiceName). @@ -55,7 +55,7 @@ func StartProxy(kubernetesProvider *Provider, proxyHost string, srcPort uint16, go func() { if err := server.Serve(l); err != nil && err != http.ErrServerClosed { log.Error().Err(err).Msg("While creating proxy!") - cancel() + return } }() @@ -99,7 +99,7 @@ func getRerouteHttpHandlerSelfStatic(proxyHandler http.Handler, selfNamespace st }) } -func NewPortForward(kubernetesProvider *Provider, namespace string, podRegex *regexp.Regexp, srcPort uint16, dstPort uint16, ctx context.Context, cancel context.CancelFunc) (*portforward.PortForwarder, error) { +func NewPortForward(kubernetesProvider *Provider, namespace string, podRegex *regexp.Regexp, srcPort uint16, dstPort uint16, ctx context.Context) (*portforward.PortForwarder, error) { pods, err := kubernetesProvider.ListAllRunningPodsMatchingRegex(ctx, podRegex, []string{namespace}) if err != nil { return nil, err @@ -132,7 +132,7 @@ func NewPortForward(kubernetesProvider *Provider, namespace string, podRegex *re go func() { if err = forwarder.ForwardPorts(); err != nil { log.Error().Err(err).Msg("While Kubernetes port-forwarding!") - cancel() + return } }()