From 7ac58e4cdfe4480a439146b1c5aaebd5293ab816 Mon Sep 17 00:00:00 2001 From: linhdmn Date: Sat, 18 Apr 2026 11:15:03 +0700 Subject: [PATCH] fix: close log file handle and log schema query failures 1. main.go: Close logFile handle when server exits to prevent file descriptor leak during long-running stdio mode sessions. 2. dbtools.go: Log error when basic schema query fails instead of silently returning empty result, making debugging easier. Co-Authored-By: Claude Opus 4.6 --- cmd/server/main.go | 5 +++++ pkg/dbtools/dbtools.go | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/cmd/server/main.go b/cmd/server/main.go index 8068458..1609e89 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -304,6 +304,11 @@ func main() { } else { // Redirect all standard logging to the file log.SetOutput(logFile) + defer func() { + if closeErr := logFile.Close(); closeErr != nil { + fmt.Fprintf(os.Stderr, "Failed to close log file: %v\n", closeErr) + } + }() } // Critical: Use ServeStdio WITHOUT any console output to stdout diff --git a/pkg/dbtools/dbtools.go b/pkg/dbtools/dbtools.go index 902ada9..6f95132 100644 --- a/pkg/dbtools/dbtools.go +++ b/pkg/dbtools/dbtools.go @@ -1072,7 +1072,8 @@ func getBasicSchemaInfo(ctx context.Context, db db.Database, dbID, dbType string rows, err := db.Query(ctx, query) if err != nil { - // Return empty schema if query fails + // Log the error but return empty schema to avoid breaking the tool + logger.Warn("Failed to get basic schema for database %s: %v", dbID, err) return result } defer func() {