From 1b0ec8a7fc96e1aca34492d29c20d3967a4530fb Mon Sep 17 00:00:00 2001 From: Eric Weber Date: Thu, 8 Aug 2024 14:59:26 +0000 Subject: [PATCH] fix(datconn): don't orphan client goroutine when remote is closed Longhorn 8711 Signed-off-by: Eric Weber (cherry picked from commit bbf32e0f1cc58723715ecd43e1085d82cef8a8b1) --- pkg/backend/remote/remote.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/backend/remote/remote.go b/pkg/backend/remote/remote.go index 18b0499c5..0ab73c665 100644 --- a/pkg/backend/remote/remote.go +++ b/pkg/backend/remote/remote.go @@ -48,6 +48,12 @@ type Remote struct { func (r *Remote) Close() error { logrus.Infof("Closing: %s", r.name) + + // Close the dataconn client to avoid orphaning goroutines. + if dataconnClient, ok := r.ReaderWriterUnmapperAt.(*dataconn.Client); ok { + dataconnClient.Close() + } + conn, err := grpc.NewClient(r.replicaServiceURL, grpc.WithTransportCredentials(insecure.NewCredentials()), interceptor.WithIdentityValidationClientInterceptor(r.volumeName, "")) if err != nil {