Skip to content

Commit

Permalink
Merge pull request #24 from uselagoon/handle-conn-closed
Browse files Browse the repository at this point in the history
fix: handle NATS connection closing itself
  • Loading branch information
smlx authored Mar 3, 2022
2 parents 02a9afb + 84747ec commit eaea37e
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 5 deletions.
4 changes: 2 additions & 2 deletions cmd/service-api/serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,6 @@ func (cmd *ServeCmd) Run(log *zap.Logger) error {
return fmt.Errorf("couldn't init keycloak Client: %v", err)
}
// start serving NATS requests
return serviceapi.ServeNATS(ctx, log, l, k, cmd.NATSURL, cmd.NATSUsername,
cmd.NATSPassword)
return serviceapi.ServeNATS(ctx, stop, log, l, k, cmd.NATSURL,
cmd.NATSUsername, cmd.NATSPassword)
}
8 changes: 5 additions & 3 deletions internal/serviceapi/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,17 @@ type KeycloakService interface {
}

// ServeNATS serviceapi NATS requests.
func ServeNATS(ctx context.Context, log *zap.Logger, l LagoonDBService,
k KeycloakService, natsURL, natsUser, natsPass string) error {
func ServeNATS(ctx context.Context, stop context.CancelFunc, log *zap.Logger,
l LagoonDBService, k KeycloakService, natsURL, natsUser,
natsPass string) error {
// setup synchronisation
wg := sync.WaitGroup{}
wg.Add(1)
// connect to NATS server
nc, err := nats.Connect(natsURL,
// synchronise exiting ServeNATS()
nats.ClosedHandler(func(_ *nats.Conn) {
stop()
wg.Done()
}),
// pass credentials
Expand All @@ -58,7 +60,7 @@ func ServeNATS(ctx context.Context, log *zap.Logger, l LagoonDBService,
<-ctx.Done()
// drain and log errors
if err := c.Drain(); err != nil {
log.Error("couldn't drain connection", zap.Error(err))
log.Warn("couldn't drain connection", zap.Error(err))
}
// wait for connection to close
wg.Wait()
Expand Down

0 comments on commit eaea37e

Please sign in to comment.