{"record":{"id":"e89cbfeda4079df7","repo":"apache/seatunnel","slug":"logger-level-request-to-member-failed","errorCode":null,"errorMessage":"Logger level request to member {} failed","messagePattern":"Logger level request to member (.+?) failed","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/service/LoggerLevelService.java","lineNumber":189,"sourceCode":"                                NodeEngineUtil.sendOperationToMemberNode(\n                                                nodeEngine,\n                                                new GetNodeHttpPortOperation(),\n                                                member.getAddress())\n                                        .get();\n                memberId = member.getAddress().getHost() + \":\" + httpPort;\n                String url =\n                        \"http://\"\n                                + member.getAddress().getHost()\n                                + \":\"\n                                + httpPort\n                                + httpConfig.getContextPath()\n                                + RestConstant.REST_URL_LOGGERS\n                                + (name == null ? \"\" : \"/\" + encode(name))\n                                + (level == null ? \"\" : \"?\" + LEVEL + \"=\" + encode(level.name()));\n                nodes.add(request(url, method, httpConfig));\n                reached++;\n            } catch (Throwable t) {\n                log.warn(\"Logger level request to member {} failed\", memberId, t);\n                nodes.add(\n                        new JsonObject()\n                                .add(NODE, memberId)\n                                .add(STATUS, FAILURE)\n                                .add(ERROR, errorMessage(t)));\n                failed++;\n            }\n        }\n        String status = failed == 0 ? SUCCESS : (reached == 0 ? FAILURE : PARTIAL_FAILURE);\n        JsonObject response = new JsonObject().add(SCOPE, SCOPE_CLUSTER).add(STATUS, status);\n        if (name != null) {\n            response.add(NAME, name);\n        }\n        if (level != null) {\n            response.add(LEVEL, level.name());\n        }\n        return response.add(NODES, nodes);\n    }","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/service/LoggerLevelService.java#L171-L207","documentation":"LoggerLevelService.fanOut sends logger-level GET/SET/RESET requests to each cluster member over HTTP. If a member request throws, this warning is logged (with the throwable) and a per-node JSON entry with STATUS=FAILURE and the error message is added to the response, so the caller sees which node failed while other nodes still report.","triggerScenarios":"Calling cluster loggers / clusterSetLevel / clusterResetLevel REST endpoints when a member is unreachable, its HTTP port is wrong, basic-auth fails, or the target logger name/level is rejected by that node's endpoint.","commonSituations":"One node down or restarting during the fan-out; per-node auth credentials mismatch; mixed-version cluster where the /loggers endpoint differs; invalid level name for that node's logging framework.","solutions":["Inspect the per-node ERROR field in the returned JSON to see why that member failed.","Verify the failing member is up and its REST port is reachable; restart or fix networking.","Check basic-auth configuration consistency across nodes.","Use a valid level enum supported by the target logging implementation; avoid mixed versions in the cluster."],"exampleFix":"// before\n// POST /loggers/MyLogger?level=VERBOSE\n// after (valid level)\n// POST /loggers/MyLogger?level=DEBUG","handlingStrategy":"try-catch","validationCode":"// before fan-out, validate level and member reachability\n// if (!VALID_LEVELS.contains(level.name())) throw new IllegalArgumentException(\"bad level\");\n// if (!isNodeReachable(memberId)) { preMarkFailure(memberId); }","typeGuard":null,"tryCatchPattern":"try {\n    nodes.add(request(url, method, httpConfig));\n    reached++;\n} catch (Throwable t) {\n    log.warn(\"Logger level request to member {} failed\", memberId, t);\n    nodes.add(perNodeFailure(memberId, t)); // node entry with STATUS=FAILURE\n}","preventionTips":["Only use valid logger level enums","Keep cluster nodes on compatible versions","Check member health before cluster-wide logger operations"],"tags":["http","rest-api","logging","fan-out","cluster"],"backgroundTag":"http-error-response","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}