From 27446adf3fb551b4f8c2a263c27718891a671ecb Mon Sep 17 00:00:00 2001 From: Alexey Date: Sat, 2 Aug 2025 10:04:00 +0300 Subject: [PATCH] add debug information to lua_handler and route --- internal/server/gateway/route.go | 4 ++++ internal/server/sv1/lua_handler.go | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/internal/server/gateway/route.go b/internal/server/gateway/route.go index b526564..18de8cc 100644 --- a/internal/server/gateway/route.go +++ b/internal/server/gateway/route.go @@ -21,9 +21,11 @@ func (gs *GatewayServer) Handle(w http.ResponseWriter, r *http.Request) { if sessionUUID == "" { sessionUUID = uuid.New().String() } + gs.x.SLog.Debug("new request", slog.String("session-uuid", sessionUUID), slog.Group("connection", slog.String("ip", r.RemoteAddr))) w.Header().Set("X-Session-UUID", sessionUUID) if !gs.sm.Add(sessionUUID) { + gs.x.SLog.Debug("session is busy", slog.String("session-uuid", sessionUUID)) rpc.WriteError(w, &rpc.RPCResponse{ Error: map[string]any{ "code": rpc.ErrSessionIsBusy, @@ -36,6 +38,7 @@ func (gs *GatewayServer) Handle(w http.ResponseWriter, r *http.Request) { body, err := io.ReadAll(r.Body) if err != nil { + gs.x.SLog.Debug("failed to read body", slog.String("err", err.Error())) w.WriteHeader(http.StatusBadRequest) rpc.WriteError(w, &rpc.RPCResponse{ JSONRPC: rpc.JSONRPCVersion, @@ -55,6 +58,7 @@ func (gs *GatewayServer) Handle(w http.ResponseWriter, r *http.Request) { var single rpc.RPCRequest if batch == nil { if err := json.Unmarshal(body, &single); err != nil { + gs.x.SLog.Debug("failed to parse json", slog.String("err", err.Error())) w.WriteHeader(http.StatusBadRequest) rpc.WriteError(w, &rpc.RPCResponse{ JSONRPC: rpc.JSONRPCVersion, diff --git a/internal/server/sv1/lua_handler.go b/internal/server/sv1/lua_handler.go index d38c3db..b6857c4 100644 --- a/internal/server/sv1/lua_handler.go +++ b/internal/server/sv1/lua_handler.go @@ -38,6 +38,7 @@ func addInitiatorHeaders(sid string, req *http.Request, headers http.Header) { // I will be only glad. // TODO: make this huge function more harmonious by dividing responsibilities func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest, path string) *rpc.RPCResponse { + h.x.SLog.Debug("handling LUA", slog.String("session-id", sid)) L := lua.NewState() defer L.Close() @@ -243,6 +244,7 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest, L.PreloadModule("log", loadLogMod) L.PreloadModule("net", loadNetMod) + h.x.SLog.Debug("preparing environment", slog.String("session-id", sid)) prep := filepath.Join(*h.x.Config.Conf.Node.ComDir, "_prepare.lua") if _, err := os.Stat(prep); err == nil { if err := L.DoFile(prep); err != nil { @@ -250,6 +252,7 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest, return rpc.NewError(rpc.ErrInternalError, rpc.ErrInternalErrorS, nil, req.ID) } } + h.x.SLog.Debug("executing script", slog.String("script", path), slog.String("session-id", sid)) if err := L.DoFile(path); err != nil { h.x.SLog.Error("script error", slog.String("script", path), slog.String("error", err.Error())) return rpc.NewError(rpc.ErrInternalError, rpc.ErrInternalErrorS, nil, req.ID) @@ -279,6 +282,7 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest, tag := sessionTbl.RawGetString("__gosally_internal") if tag.Type() != lua.LTString || tag.String() != fmt.Sprint(seed) { + h.x.SLog.Debug("stock session module is not imported: wrong seed", slog.String("script", path), slog.String("session-id", sid)) return rpc.NewResponse(map[string]any{ "responsible-node": h.cs.UUID32, }, req.ID) @@ -292,6 +296,7 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest, } if errVal := outTbl.RawGetString("error"); errVal != lua.LNil { + h.x.SLog.Debug("catch error table", slog.String("script", path), slog.String("session-id", sid)) if errTbl, ok := errVal.(*lua.LTable); ok { code := rpc.ErrInternalError message := rpc.ErrInternalErrorS