Skip to content

Commit b29e655

Browse files
aldenh-viamdanielbotros
authored andcommitted
Use separate WithSignalingConn if AppAddress != SignalingAddress (viamrobotics#5257)
1 parent 83be971 commit b29e655

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

web/server/entrypoint.go

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,11 @@ type Arguments struct {
6060
}
6161

6262
type robotServer struct {
63-
args Arguments
64-
logger logging.Logger
65-
registry *logging.Registry
66-
conn rpc.ClientConn
63+
args Arguments
64+
logger logging.Logger
65+
registry *logging.Registry
66+
conn rpc.ClientConn
67+
signalingConn rpc.ClientConn
6768
}
6869

6970
func logViamEnvVariables(logger logging.Logger) {
@@ -184,7 +185,7 @@ func RunServer(ctx context.Context, args []string, _ logging.Logger) (err error)
184185
defer pprof.StopCPUProfile()
185186
}
186187

187-
var appConn rpc.ClientConn
188+
var appConn, signalingConn rpc.ClientConn
188189

189190
// Read the config from disk and use it to initialize the remote logger.
190191
cfgFromDisk, err := config.ReadLocalConfig(argsParsed.ConfigFile, logger.Sublogger("config"))
@@ -210,6 +211,18 @@ func RunServer(ctx context.Context, args []string, _ logging.Logger) (err error)
210211
return err
211212
}
212213
defer utils.UncheckedErrorFunc(appConn.Close)
214+
215+
// if SignalingAddress is specified and different from AppAddress, create a new connection to it. Otherwise reuse appConn.
216+
if cloud.SignalingAddress != "" && cloud.SignalingAddress != cloud.AppAddress {
217+
signalingConnLogger := logger.Sublogger("networking").Sublogger("signaling_connection")
218+
signalingConn, err = grpc.NewAppConn(ctx, cloud.SignalingAddress, cloud.Secret, cloud.ID, signalingConnLogger)
219+
if err != nil {
220+
return err
221+
}
222+
defer utils.UncheckedErrorFunc(signalingConn.Close)
223+
} else {
224+
signalingConn = appConn
225+
}
213226
}
214227

215228
// Start remote logging with config from disk.
@@ -240,10 +253,11 @@ func RunServer(ctx context.Context, args []string, _ logging.Logger) (err error)
240253
go nc.RunNetworkChecks(ctx, logger, true /* continueRunningTestDNS */)
241254

242255
server := robotServer{
243-
logger: logger,
244-
args: argsParsed,
245-
registry: registry,
246-
conn: appConn,
256+
logger: logger,
257+
args: argsParsed,
258+
registry: registry,
259+
conn: appConn,
260+
signalingConn: signalingConn,
247261
}
248262

249263
// Run the server with remote logging enabled.
@@ -290,7 +304,9 @@ func (s *robotServer) createWebOptions(cfg *config.Config) (weboptions.Options,
290304
if cfg.Cloud != nil && s.args.AllowInsecureCreds {
291305
options.SignalingDialOpts = append(options.SignalingDialOpts, rpc.WithAllowInsecureWithCredentialsDowngrade())
292306
}
293-
options.SignalingDialOpts = append(options.SignalingDialOpts, rpc.WithSignalingConn(s.conn))
307+
// options.SignalingAddress is set in config processing
308+
// signalingConn is a separate connection if SignalingAddress and AppAddress differ, otherwise it points to s.conn
309+
options.SignalingDialOpts = append(options.SignalingDialOpts, rpc.WithSignalingConn(s.signalingConn))
294310

295311
if len(options.Auth.Handlers) == 0 {
296312
host, _, err := net.SplitHostPort(cfg.Network.BindAddress)

0 commit comments

Comments
 (0)