paascloud/paascloud-master · error · TpcBizException
GL99990002
GL99990002
Error message
GL99990002
What it means
GL99990002 (the platform's generic 'remote call returned null / failed' business error) is thrown by MdcRpcService.queryMessageListWithPage when the Feign call to mdcMqMessageFeignApi.queryMessageListWithPage returns null. A null Wrapper means the downstream UAC/MDC service call failed at the RPC layer (no result envelope was produced), so the service converts it into a TpcBizException.
Solutions
- Check whether the MDC service is up and registered under the name the @FeignClient expects.
- Inspect TPC logs/gateway for the underlying Feign exception (timeout, connection refused) that produced the null result.
- Fix any Feign fallback that swallows the real error and returns null; prefer throwing or returning an error Wrapper.
- Retry the query — transient network issues are a common cause.
- Verify the query payload (MessageQueryDto) does not cause the downstream endpoint to fail validation.
Example fix
// before: null Feign result propagates as exception
Wrapper<PageInfo<MqMessageVo>> w = mdcRpcService.queryMessageListWithPage(dto);
// after: guard and degrade gracefully
try {
Wrapper<PageInfo<MqMessageVo>> w = mdcRpcService.queryMessageListWithPage(dto);
return w.getResult();
} catch (TpcBizException e) {
log.warn("MDC message query unavailable, returning empty page", e);
return new PageInfo<>(Collections.emptyList());
} Defensive patterns
Strategy: try-catch
Try / catch
try {
Wrapper<PageInfo<MqMessageVo>> w = mdcRpcService.queryMessageListWithPage(dto);
return w.getResult();
} catch (TpcBizException e) {
if (e.getCode() == 99990002L) {
log.warn("MDC RPC returned null — serving degraded result");
return emptyPage();
}
throw e;
} Prevention
- Never let Feign fallbacks return null — throw or return error Wrappers.
- Set sensible Feign/ribbon timeouts and retries for read endpoints.
- Health-check downstream MDC service before dependent flows.
- Alert on GL99990002 frequency as an RPC-health signal.
- Pin the @FeignClient service name in config to survive renames.
When it happens
Trigger: Calling MdcRpcService.queryMessageListWithPage(messageQueryDto) when the Feign client for the MDC message API returns null — typically because the downstream service is down, the call timed out, or a fallback returned null.
Common situations: MDC service not registered in the registry or scaled to zero; network timeout between TPC and MDC; Feign fallback configured to return null on failure; mismatched service name in @FeignClient after a rename.
Related errors
AI-assisted analysis of paascloud/paascloud-master@781281a950 (2026-09-10).
Data as JSON: /api/errors/7f1c0c93ce6dca9a.
Report an issue: GitHub.
Appendix: source
Thrown at paascloud-provider/paascloud-provider-tpc/src/main/java/com/paascloud/provider/service/MdcRpcService.java:41
import javax.annotation.Resource;
/**
* The class Mdc rpc service.
*
* @author paascloud.net @gmail.com
*/
@Slf4j
@Service
public class MdcRpcService {
@Resource
private MdcMqMessageFeignApi mdcMqMessageFeignApi;
public Wrapper<PageInfo<MqMessageVo>> queryMessageListWithPage(final MessageQueryDto messageQueryDto) {
Wrapper<PageInfo<MqMessageVo>> wrapper = mdcMqMessageFeignApi.queryMessageListWithPage(messageQueryDto);
if (wrapper == null) {
log.error("查询消息记录. 失败 result is null");
throw new TpcBizException(ErrorCodeEnum.GL99990002);
}
return wrapper;
}
}View on GitHub (pinned to 781281a950)