paascloud/paascloud-master · error · TpcBizException
GL99990002
GL99990002
Error message
GL99990002
What it means
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.
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.
Example fix
// before: null result crashes the caller path
Wrapper<PageInfo<MqMessageVo>> w = opcRpcService.queryMessageListWithPage(dto);
// after: catch the platform error and degrade
try {
return opcRpcService.queryMessageListWithPage(dto).getResult();
} catch (TpcBizException e) {
log.warn("OPC query failed, serving cached/empty result", e);
return Collections.emptyList();
} Defensive patterns
Strategy: try-catch
Try / catch
try {
Wrapper<PageInfo<MqMessageVo>> w = opcRpcService.queryMessageListWithPage(dto);
return w.getResult();
} catch (TpcBizException e) {
if (e.getCode() == 99990002L) {
log.warn("OPC RPC failed — using fallback page");
return emptyPage();
}
throw e;
} Prevention
- 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.
When it happens
Trigger: Calling OpcRpcService.queryMessageListWithPage(messageQueryDto) when opcMqMessageFeignApi returns null — downstream OPC service down/unregistered, request timeout, or fallback returning null.
Common situations: 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).
Related errors
AI-assisted analysis of paascloud/paascloud-master@781281a950 (2026-09-10).
Data as JSON: /api/errors/cd436defe2e6affd.
Report an issue: GitHub.
Appendix: source
Thrown at paascloud-provider/paascloud-provider-tpc/src/main/java/com/paascloud/provider/service/OpcRpcService.java:66
* @return the boolean
*/
public boolean sendChatRobotMsg(ChatRobotMsgDto chatRobotMsgDto) {
Wrapper<Boolean> result = dingtalkFeignApi.sendChatRobotMsg(chatRobotMsgDto);
return result.getResult();
}
/**
* Delete expire file.
*/
public void deleteExpireFile() {
opcOssFeignApi.deleteExpireFile();
}
public Wrapper<PageInfo<MqMessageVo>> queryMessageListWithPage(final MessageQueryDto messageQueryDto) {
Wrapper<PageInfo<MqMessageVo>> wrapper = opcMqMessageFeignApi.queryMessageListWithPage(messageQueryDto);
if (wrapper == null) {
log.error("查询消息记录 失败 result is null");
throw new TpcBizException(ErrorCodeEnum.GL99990002);
}
return wrapper;
}
}View on GitHub (pinned to 781281a950)