Skip to content

Commit 4cf8bdb

Browse files
authored
refactor: extract registrationErrors helper to eliminate duplicate error-tracking pattern
1 parent 89dd314 commit 4cf8bdb

1 file changed

Lines changed: 23 additions & 12 deletions

File tree

internal/server/tool_registry.go

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -102,27 +102,40 @@ func (us *UnifiedServer) registerAllTools() error {
102102
}
103103
}
104104

105-
func logRegistrationIncomplete(failedServers []string, totalServers int) {
106-
if len(failedServers) > 0 {
105+
// registrationErrors tracks backend servers that failed tool registration and
106+
// logs a summary when finish is called. Both the sequential and parallel
107+
// registration strategies use this type so failure-tracking semantics are
108+
// defined in one place.
109+
type registrationErrors struct {
110+
failed []string
111+
total int
112+
}
113+
114+
func (e *registrationErrors) record(serverID string) {
115+
e.failed = append(e.failed, serverID)
116+
}
117+
118+
func (e *registrationErrors) finish() {
119+
if len(e.failed) > 0 {
107120
logger.LogError("backend", "Tool registration incomplete: %d of %d backends failed: %v — agents will not see tools from these servers",
108-
len(failedServers), totalServers, failedServers)
121+
len(e.failed), e.total, e.failed)
109122
}
110123
}
111124

112125
// registerAllToolsSequential registers tools from backend servers sequentially
113126
func (us *UnifiedServer) registerAllToolsSequential(serverIDs []string) error {
114127
logUnified.Printf("Registering tools sequentially from %d backends", len(serverIDs))
115128

116-
var failedServers []string
129+
errs := &registrationErrors{total: len(serverIDs)}
117130
for _, serverID := range serverIDs {
118131
logUnified.Printf("Registering tools from backend: %s", serverID)
119132
if err := us.registerToolsFromBackend(serverID); err != nil {
120133
logger.LogError("backend", "Failed to register tools from %s: %v", serverID, err)
121-
failedServers = append(failedServers, serverID)
134+
errs.record(serverID)
122135
}
123136
}
124137

125-
logRegistrationIncomplete(failedServers, len(serverIDs))
138+
errs.finish()
126139
logUnified.Printf("Tool registration complete: total tools=%d", len(us.tools))
127140
return nil
128141
}
@@ -158,23 +171,21 @@ func (us *UnifiedServer) registerAllToolsParallel(serverIDs []string) error {
158171

159172
// Collect and log results
160173
successCount := 0
161-
failureCount := 0
162-
var failedServers []string
174+
errs := &registrationErrors{total: len(serverIDs)}
163175
for result := range results {
164176
if result.err != nil {
165177
logger.LogErrorToServer(result.serverID, "backend", "Failed to register tools from %s (took %v): %v", result.serverID, result.duration, result.err)
166-
failureCount++
167-
failedServers = append(failedServers, result.serverID)
178+
errs.record(result.serverID)
168179
} else {
169180
logUnified.Printf("Successfully registered tools from %s (took %v)", result.serverID, result.duration)
170181
logger.LogInfoToServer(result.serverID, "backend", "Successfully registered tools from %s (took %v)", result.serverID, result.duration)
171182
successCount++
172183
}
173184
}
174185

175-
logRegistrationIncomplete(failedServers, len(serverIDs))
186+
errs.finish()
176187

177-
logger.LogInfo("backend", "Tool registration complete: %d succeeded, %d failed, total tools=%d", successCount, failureCount, len(us.tools))
188+
logger.LogInfo("backend", "Tool registration complete: %d succeeded, %d failed, total tools=%d", successCount, len(errs.failed), len(us.tools))
178189
return nil
179190
}
180191

0 commit comments

Comments
 (0)