Don't call cancel() in case of a proxy/port-forward error

This commit is contained in:
M. Mert Yildiran 2023-01-22 05:04:44 +03:00
parent 6c69fb6bc4
commit edf5c8cd6d
No known key found for this signature in database
GPG Key ID: DA5D6DCBB758A461
4 changed files with 7 additions and 14 deletions

View File

@ -18,13 +18,12 @@ import (
"github.com/rs/zerolog/log" "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) { 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, cancel) httpServer, err := kubernetes.StartProxy(kubernetesProvider, config.Config.Tap.Proxy.Host, srcPort, config.Config.SelfNamespace, serviceName)
if err != nil { if err != nil {
log.Error(). log.Error().
Err(errormessage.FormatError(err)). Err(errormessage.FormatError(err)).
Msg(fmt.Sprintf("Error occured while running K8s proxy. Try setting different port using --%s", proxyPortLabel)) Msg(fmt.Sprintf("Error occured while running K8s proxy. Try setting different port using --%s", proxyPortLabel))
cancel()
return return
} }
@ -40,12 +39,11 @@ func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, ctx con
} }
podRegex, _ := regexp.Compile(podName) 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(). log.Error().
Str("pod-regex", podRegex.String()). Str("pod-regex", podRegex.String()).
Err(errormessage.FormatError(err)). Err(errormessage.FormatError(err)).
Msg(fmt.Sprintf("Error occured while running port forward. Try setting different port using --%s", proxyPortLabel)) Msg(fmt.Sprintf("Error occured while running port forward. Try setting different port using --%s", proxyPortLabel))
cancel()
return return
} }
@ -55,7 +53,6 @@ func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, ctx con
Str("service", serviceName). Str("service", serviceName).
Err(errormessage.FormatError(err)). Err(errormessage.FormatError(err)).
Msg("Couldn't connect to service.") Msg("Couldn't connect to service.")
cancel()
return return
} }
} }

View File

@ -76,7 +76,6 @@ func runProxy() {
startProxyReportErrorIfAny( startProxyReportErrorIfAny(
kubernetesProvider, kubernetesProvider,
ctx, ctx,
cancel,
kubernetes.HubServiceName, kubernetes.HubServiceName,
kubernetes.HubPodName, kubernetes.HubPodName,
configStructs.ProxyHubPortLabel, configStructs.ProxyHubPortLabel,
@ -107,7 +106,6 @@ func runProxy() {
startProxyReportErrorIfAny( startProxyReportErrorIfAny(
kubernetesProvider, kubernetesProvider,
ctx, ctx,
cancel,
kubernetes.FrontServiceName, kubernetes.FrontServiceName,
kubernetes.FrontPodName, kubernetes.FrontPodName,
configStructs.ProxyFrontPortLabel, configStructs.ProxyFrontPortLabel,

View File

@ -369,7 +369,6 @@ func postHubStarted(ctx context.Context, kubernetesProvider *kubernetes.Provider
startProxyReportErrorIfAny( startProxyReportErrorIfAny(
kubernetesProvider, kubernetesProvider,
ctx, ctx,
cancel,
kubernetes.HubServiceName, kubernetes.HubServiceName,
kubernetes.HubPodName, kubernetes.HubPodName,
configStructs.ProxyHubPortLabel, configStructs.ProxyHubPortLabel,
@ -404,7 +403,6 @@ func postFrontStarted(ctx context.Context, kubernetesProvider *kubernetes.Provid
startProxyReportErrorIfAny( startProxyReportErrorIfAny(
kubernetesProvider, kubernetesProvider,
ctx, ctx,
cancel,
kubernetes.FrontServiceName, kubernetes.FrontServiceName,
kubernetes.FrontPodName, kubernetes.FrontPodName,
configStructs.ProxyFrontPortLabel, configStructs.ProxyFrontPortLabel,

View File

@ -21,7 +21,7 @@ import (
const k8sProxyApiPrefix = "/" const k8sProxyApiPrefix = "/"
const selfServicePort = 80 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(). log.Info().
Str("namespace", selfNamespace). Str("namespace", selfNamespace).
Str("service", selfServiceName). Str("service", selfServiceName).
@ -55,7 +55,7 @@ func StartProxy(kubernetesProvider *Provider, proxyHost string, srcPort uint16,
go func() { go func() {
if err := server.Serve(l); err != nil && err != http.ErrServerClosed { if err := server.Serve(l); err != nil && err != http.ErrServerClosed {
log.Error().Err(err).Msg("While creating proxy!") 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}) pods, err := kubernetesProvider.ListAllRunningPodsMatchingRegex(ctx, podRegex, []string{namespace})
if err != nil { if err != nil {
return nil, err return nil, err
@ -132,7 +132,7 @@ func NewPortForward(kubernetesProvider *Provider, namespace string, podRegex *re
go func() { go func() {
if err = forwarder.ForwardPorts(); err != nil { if err = forwarder.ForwardPorts(); err != nil {
log.Error().Err(err).Msg("While Kubernetes port-forwarding!") log.Error().Err(err).Msg("While Kubernetes port-forwarding!")
cancel() return
} }
}() }()