{"record":{"id":"8b17d3a004f3551e","repo":"apache/incubator-seata","slug":"mcp-get-call-tc-failed","errorCode":null,"errorMessage":"MCP GET Call TC Failed.","messagePattern":"MCP GET Call TC Failed\\.","errorType":"exception","errorClass":"ServiceCallException","httpStatus":null,"severity":"error","filePath":"console/src/main/java/org/apache/seata/mcp/service/impl/ConsoleRemoteServiceImpl.java","lineNumber":167,"sourceCode":"        HttpEntity<String> entity = new HttpEntity<>(headers);\n        String responseBody;\n        try {\n            ResponseEntity<String> response = executeRequest(url, HttpMethod.GET, entity);\n\n            responseBody = response.getBody();\n\n            if (!response.getStatusCode().is2xxSuccessful()) {\n                String errorMsg = String.format(\n                        \"MCP GET request failed with status: %s, response: %s\",\n                        response.getStatusCode(), response.getBody());\n                LOGGER.warn(errorMsg);\n                throw new ServiceCallException(errorMsg, response.getStatusCode());\n            }\n            return responseBody;\n        } catch (RestClientException e) {\n            String errorMsg = \"MCP GET Call TC Failed.\";\n            LOGGER.error(errorMsg, e);\n            throw new ServiceCallException(errorMsg);\n        }\n    }\n\n    @Override\n    public String deleteCallTC(\n            NameSpaceDetail nameSpaceDetail,\n            String path,\n            Object objectQueryParams,\n            Map<String, String> queryParams,\n            HttpHeaders headers) {\n        if (headers == null) {\n            headers = new HttpHeaders();\n        }\n        if (nameSpaceDetail == null || !nameSpaceDetail.isValid()) {\n            return \"If you have not specified the namespace of the TC/Server, specify the namespace first\";\n        } else {\n            setNamespaceHeaderAndQueryParam(nameSpaceDetail, headers, queryParams);\n        }","sourceCodeStart":149,"sourceCodeEnd":185,"githubUrl":"https://github.com/apache/incubator-seata/blob/e01f97c6db397165050caa6764020410c2c8199a/console/src/main/java/org/apache/seata/mcp/service/impl/ConsoleRemoteServiceImpl.java#L149-L185","documentation":"getCallTC wraps any RestClientException from the HTTP GET to a TC instance into ServiceCallException('MCP GET Call TC Failed.'). It fires when the transport itself fails — connection refused, timeout, unknown host — rather than when the TC returns an error status (that is error 116).","triggerScenarios":"Calling getCallTC for a TC instance that is down, restarting, network-partitioned from the console, or registered with an unreachable address in the naming server; also read timeouts on large session/lock queries.","commonSituations":"A seata-server pod crashed or is mid-restart but still registered in the naming server; stale TC addresses after scale-down or host migration; slow GC or load spikes on the TC causing the console's REST timeout.","solutions":["Verify the target TC process is up and its port reachable from the console host (curl the TC's health endpoint)","If the TC address is stale in the naming server, wait for re-registration or restart the TC so it re-registers","Raise the REST client timeouts for heavy queries like session list","Add retry around the call for transient restart windows, treating ServiceCallException without a status as transport-level"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"if (!tcHealthEndpointReachable(tcAddr)) throw new IllegalStateException(\"TC unreachable: \" + tcAddr);","typeGuard":null,"tryCatchPattern":"try { call(); } catch (ServiceCallException e) { if (isTransportFailure(e)) retryWithBackoff(max 3); else throw e; }","preventionTips":["Prune stale TC registrations from the naming server","Purge/re-check TC health before running console batch operations","Distinguish transport failures (no status) from upstream errors (has status) in handlers"],"tags":["seata","console","tc","network"],"backgroundTag":null,"analyzedSha":"e01f97c6db397165050caa6764020410c2c8199a","analyzedAt":"2026-08-14T10:23:53.097Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}