fix: return not found for missing internal user

This commit is contained in:
richjohnrambo
2026-08-28 13:05:26 +08:00
parent 08a4f138e3
commit 5987f2d87a
2 changed files with 69 additions and 0 deletions
+14
View File
@@ -12,6 +12,7 @@ import (
"io"
"net/http"
"net/url"
"runtime/debug"
"strconv"
"strings"
"sync"
@@ -72,6 +73,12 @@ func initInternalAPI(raw json.RawMessage) error {
}
func serveInternalAdminQuery(wrt http.ResponseWriter, req *http.Request, prefix string) {
defer func() {
if recovered := recover(); recovered != nil {
logs.Err.Printf("internal admin query panic path:%s err:%v stack:%s", req.URL.RequestURI(), recovered, debug.Stack())
writeIMError(wrt, req, http.StatusInternalServerError, 90000, imReasonInternal, "internal error", nil)
}
}()
if req.Method != http.MethodGet {
writeIMError(wrt, req, http.StatusMethodNotAllowed, 30002, imReasonMethodNotAllowed, "method not allowed", nil)
return
@@ -246,14 +253,21 @@ func serveInternalUserQuery(wrt http.ResponseWriter, req *http.Request, tenantID
if row, err := store.InternalAdminQueries.QueryOne(tenantID, query, []any{userDBID}); err == nil {
writeIMSuccess(wrt, req, normalizeInternalAdminRowForAPI(row))
return
} else {
logs.Warn.Printf("internal user query sql failed tenant:%d user:%d err:%v", tenantID, userDBID, err)
}
}
uid := store.EncodeUid(userDBID)
user, err := store.Users.Get(tenantID, uid)
if err != nil {
logs.Warn.Printf("internal user query fallback failed tenant:%d user:%d err:%v", tenantID, userDBID, err)
writeInternalQueryError(wrt, req, err)
return
}
if user == nil {
writeInternalQueryError(wrt, req, types.ErrUserNotFound)
return
}
writeIMSuccess(wrt, req, map[string]any{
"user_id": userDBID,
"state": user.State,