{"record":{"id":"cd436defe2e6affd","repo":"paascloud/paascloud-master","slug":"gl99990002-cd436d","errorCode":"GL99990002","errorMessage":"GL99990002","messagePattern":"GL99990002","errorType":"error_code","errorClass":"TpcBizException","httpStatus":null,"severity":"error","filePath":"paascloud-provider/paascloud-provider-tpc/src/main/java/com/paascloud/provider/service/OpcRpcService.java","lineNumber":66,"sourceCode":"\t * @return the boolean\n\t */\n\tpublic boolean sendChatRobotMsg(ChatRobotMsgDto chatRobotMsgDto) {\n\t\tWrapper<Boolean> result = dingtalkFeignApi.sendChatRobotMsg(chatRobotMsgDto);\n\t\treturn result.getResult();\n\t}\n\n\t/**\n\t * Delete expire file.\n\t */\n\tpublic void deleteExpireFile() {\n\t\topcOssFeignApi.deleteExpireFile();\n\t}\n\n\tpublic Wrapper<PageInfo<MqMessageVo>> queryMessageListWithPage(final MessageQueryDto messageQueryDto) {\n\t\tWrapper<PageInfo<MqMessageVo>> wrapper = opcMqMessageFeignApi.queryMessageListWithPage(messageQueryDto);\n\t\tif (wrapper == null) {\n\t\t\tlog.error(\"查询消息记录 失败 result is null\");\n\t\t\tthrow new TpcBizException(ErrorCodeEnum.GL99990002);\n\t\t}\n\t\treturn wrapper;\n\t}\n}","sourceCodeStart":48,"sourceCodeEnd":70,"githubUrl":"https://github.com/paascloud/paascloud-master/blob/781281a9503332ed3cef44ea618349d14230a127/paascloud-provider/paascloud-provider-tpc/src/main/java/com/paascloud/provider/service/OpcRpcService.java#L48-L70","documentation":"GL99990002 (platform generic remote-call-failure error) is thrown by OpcRpcService.queryMessageListWithPage when the Feign call to opcMqMessageFeignApi.queryMessageListWithPage returns a null Wrapper. Null indicates the RPC to the OPC service produced no response envelope (service unavailable, timeout, or null-returning fallback), so it is converted to a TpcBizException.","triggerScenarios":"Calling OpcRpcService.queryMessageListWithPage(messageQueryDto) when opcMqMessageFeignApi returns null — downstream OPC service down/unregistered, request timeout, or fallback returning null.","commonSituations":"OPC service crash or redeploy during the call; wrong service name in the Feign client after renaming; load balancer can't find an instance; ribbon/timeout too aggressive for a slow query (large date range).","solutions":["Verify the OPC service is running and registered in the service registry under the expected name.","Look for the root Feign/ribbon exception in logs around the null result (timeout vs connection refused).","Replace null-returning fallbacks with explicit error Wrappers so failures are distinguishable.","Reduce query window/add pagination to keep the downstream call under timeout thresholds.","Retry transient failures; alert on repeated occurrences of this error code."],"exampleFix":"// before: null result crashes the caller path\nWrapper<PageInfo<MqMessageVo>> w = opcRpcService.queryMessageListWithPage(dto);\n// after: catch the platform error and degrade\ntry {\n    return opcRpcService.queryMessageListWithPage(dto).getResult();\n} catch (TpcBizException e) {\n    log.warn(\"OPC query failed, serving cached/empty result\", e);\n    return Collections.emptyList();\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    Wrapper<PageInfo<MqMessageVo>> w = opcRpcService.queryMessageListWithPage(dto);\n    return w.getResult();\n} catch (TpcBizException e) {\n    if (e.getCode() == 99990002L) {\n        log.warn(\"OPC RPC failed — using fallback page\");\n        return emptyPage();\n    }\n    throw e;\n}","preventionTips":["Avoid null-returning Feign fallbacks; surface errors explicitly.","Keep OPC service instances scaled and registered during deploys.","Right-size query windows so calls stay under timeout thresholds.","Track GL99990002 rates per downstream service in metrics.","Retry transient RPC failures with backoff before giving up."],"tags":["feign","rpc","downstream"],"backgroundTag":"upstream-api-error","analyzedSha":"781281a9503332ed3cef44ea618349d14230a127","analyzedAt":"2026-09-10T10:59:02.070Z","contentChangedAt":"2026-09-10T10:59:02.070Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}