Skip to content

Commit 19f4290

Browse files
authored
Shutdown handling tweak (#77)
* Shutdown handling tweak * Close channel for receiving errors from daemon * Tweak logging/make sure we log everything before we close out * Fix formatting error in msg for tools remove
1 parent eb21e32 commit 19f4290

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

cmd/config/tools/remove.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func (c *RemoveCmd) run(cmd *cobra.Command, args []string) error {
9292
msg = fmt.Sprintf("✓ Tools removed for server '%s': %v\n", serverName, slices.Collect(maps.Keys(removed)))
9393
}
9494

95-
_, err = fmt.Fprintf(cmd.OutOrStdout(), msg)
95+
_, err = fmt.Fprint(cmd.OutOrStdout(), msg)
9696
if err != nil {
9797
return err
9898
}

cmd/daemon.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ func (c *DaemonCmd) run(cmd *cobra.Command, args []string) error {
9191
if err := d.StartAndManage(daemonCtx); err != nil && !errors.Is(err, context.Canceled) {
9292
runErr <- err
9393
}
94+
close(runErr)
9495
}()
9596

9697
// Print --dev mode banner if required.
@@ -106,9 +107,11 @@ func (c *DaemonCmd) run(cmd *cobra.Command, args []string) error {
106107

107108
select {
108109
case <-daemonCtx.Done():
109-
return nil // Graceful Ctrl+C / SIGTERM
110+
logger.Info("Shutting down daemon")
111+
err := <-runErr // Wait for cleanup and deferred logging.
112+
return err // Graceful Ctrl+C / SIGTERM.
110113
case err := <-runErr:
111114
logger.Error("error running daemon instance", "error", err)
112-
return err // Propagate daemon failure
115+
return err // Propagate daemon failure.
113116
}
114117
}

internal/daemon/daemon.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func NewDaemon(logger hclog.Logger, cfgLoader config.Loader, apiAddr string) (*D
8181
func (d *Daemon) StartAndManage(ctx context.Context) error {
8282
// Handle clean-up.
8383
defer func() {
84-
d.logger.Info("Closing MCP server connections")
84+
d.logger.Info("Shutting down MCP servers and client connections")
8585
for _, n := range d.clientManager.List() {
8686
if c, ok := d.clientManager.Client(n); ok {
8787
_ = c.Close()
@@ -149,8 +149,8 @@ func (d *Daemon) startMCPServer(ctx context.Context, server runtime.Server) erro
149149
}
150150
args = append([]string{packageNameAndVersion}, server.Args...)
151151

152-
logger.Info(
153-
"attempting to start MCP server",
152+
logger.Debug(
153+
"attempting to start server",
154154
"binary", runtimeBinary,
155155
"args", args,
156156
"environment", env,
@@ -161,7 +161,7 @@ func (d *Daemon) startMCPServer(ctx context.Context, server runtime.Server) erro
161161
return fmt.Errorf("error starting MCP server: '%s': %w", server.Name, err)
162162
}
163163

164-
logger.Info(fmt.Sprintf("MCP server started"))
164+
logger.Info("Started")
165165

166166
// Get stderr reader
167167
stderr, ok := client.GetStderr(stdioClient)
@@ -209,12 +209,12 @@ func (d *Daemon) startMCPServer(ctx context.Context, server runtime.Server) erro
209209
}
210210

211211
packageNameAndVersion = fmt.Sprintf("%s@%s", initResult.ServerInfo.Name, initResult.ServerInfo.Version)
212-
logger.Info(fmt.Sprintf("Initialized MCP server: '%s'", packageNameAndVersion))
212+
logger.Info(fmt.Sprintf("Initialized: '%s'", packageNameAndVersion))
213213

214214
// Store the client.
215215
d.clientManager.Add(server.Name, stdioClient, server.Tools)
216216

217-
logger.Info("Ready")
217+
logger.Info("Ready!")
218218

219219
return nil
220220
}

0 commit comments

Comments
 (0)