From 41ef81464381e85b20c7141d8994e1ed4859d475 Mon Sep 17 00:00:00 2001 From: sagit <36596628+Sagit-chu@users.noreply.github.com> Date: Mon, 16 Mar 2026 22:15:28 +0800 Subject: [PATCH] fix(forward): make force-delete work with offline nodes Bypass DeleteService in force-delete and remove forward records directly, allowing deletion when nodes are offline. --- go-backend/internal/http/handler/mutations.go | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/go-backend/internal/http/handler/mutations.go b/go-backend/internal/http/handler/mutations.go index a4d26c5..4bf32c8 100644 --- a/go-backend/internal/http/handler/mutations.go +++ b/go-backend/internal/http/handler/mutations.go @@ -1852,7 +1852,27 @@ func (h *Handler) forwardDelete(w http.ResponseWriter, r *http.Request) { } func (h *Handler) forwardForceDelete(w http.ResponseWriter, r *http.Request) { - h.forwardDelete(w, r) + id := idFromBody(r, w) + if id <= 0 { + return + } + _, _, _, err := h.resolveForwardAccess(r, id) + if err != nil { + if errors.Is(err, errForwardNotFound) { + response.WriteJSON(w, response.ErrDefault("转发不存在")) + return + } + response.WriteJSON(w, response.Err(-2, err.Error())) + return + } + + // Force delete: remove DB record without touching node services. + // This is used when nodes are offline or service deletion fails. + if err := h.deleteForwardByID(id); err != nil { + response.WriteJSON(w, response.Err(-2, err.Error())) + return + } + response.WriteJSON(w, response.OKEmpty()) } func (h *Handler) forwardPause(w http.ResponseWriter, r *http.Request) {