{"record":{"id":"0e9a23154b822d08","repo":"paascloud/paascloud-master","slug":"omc10031012","errorCode":"OMC10031012","errorMessage":"OMC10031012","messagePattern":"OMC10031012","errorType":"error_code","errorClass":"OmcBizException","httpStatus":null,"severity":"error","filePath":"paascloud-provider/paascloud-provider-omc/src/main/java/com/paascloud/provider/service/impl/OpcOssServiceImpl.java","lineNumber":43,"sourceCode":"import javax.annotation.Resource;\n\n/**\n * The class Opc oss service.\n *\n * @author paascloud.net@gmail.com\n */\n@Slf4j\n@Service\npublic class OpcOssServiceImpl implements OpcOssService {\n\t@Resource\n\tprivate OpcOssFeignApi opcOssFeignApi;\n\n\t@Override\n\tpublic OptUploadFileRespDto uploadFile(OptUploadFileReqDto optUploadFileReqDto) {\n\t\tlog.info(\"uploadFile - 上传附件. optUploadFileReqDto={}\", optUploadFileReqDto);\n\t\tWrapper<OptUploadFileRespDto> wrapper = opcOssFeignApi.uploadFile(optUploadFileReqDto);\n\t\tif (null == wrapper || wrapper.error()) {\n\t\t\tthrow new OmcBizException(ErrorCodeEnum.OMC10031012);\n\t\t}\n\t\treturn wrapper.getResult();\n\t}\n\n\t@Override\n\tpublic String getFileUrl(OptGetUrlRequest optGetUrlRequest) {\n\t\tlog.info(\"getFileUrl - 获取附件地址. optUploadFileReqDto={}\", optGetUrlRequest);\n\t\tWrapper<String> wrapper = opcOssFeignApi.getFileUrl(optGetUrlRequest);\n\t\tif (null == wrapper || wrapper.error()) {\n\t\t\tthrow new OmcBizException(ErrorCodeEnum.OMC10031013);\n\t\t}\n\t\treturn wrapper.getResult();\n\t}\n}\n","sourceCodeStart":25,"sourceCodeEnd":58,"githubUrl":"https://github.com/paascloud/paascloud-master/blob/781281a9503332ed3cef44ea618349d14230a127/paascloud-provider/paascloud-provider-omc/src/main/java/com/paascloud/provider/service/impl/OpcOssServiceImpl.java#L25-L58","documentation":"ErrorCodeEnum.OMC10031012 ('upload failed', 上传失败) is thrown by OpcOssServiceImpl.uploadFile when the opc-oss Feign call returns a null Wrapper or a Wrapper in error state. It wraps any failure of the remote OSS file-upload service (network error, Feign fallback, or downstream rejection) as a single business exception.","triggerScenarios":"Calling uploadFile(optUploadFileReqDto) when the opc-oss service is down/unreachable, the Feign client returns its error fallback (null wrapper), or the OSS service rejects the file (size/type limits, storage failure) — wrapper.error() true.","commonSituations":"opc-oss provider not registered in the registry (service not deployed), file exceeding OSS size limits, expired OSS credentials/bucket config, network partition between services.","solutions":["Check that the opc-oss service is running and registered (registry console / /health endpoint)","Inspect opc-oss logs for the real cause (bucket/credentials/size limit) and fix the downstream issue","Verify Feign timeout and fallback configuration for opcOssFeignApi; add retry for transient failures"],"exampleFix":"// before\nWrapper<OptUploadFileRespDto> wrapper = opcOssFeignApi.uploadFile(optUploadFileReqDto);\nif (null == wrapper || wrapper.error()) {\n    throw new OmcBizException(ErrorCodeEnum.OMC10031012);\n}\n// after\nWrapper<OptUploadFileRespDto> wrapper = opcOssFeignApi.uploadFile(optUploadFileReqDto);\nif (null == wrapper || wrapper.error()) {\n    log.error(\"oss upload failed, reason={}\", wrapper == null ? \"no response/fallback\" : wrapper.getError());\n    throw new OmcBizException(ErrorCodeEnum.OMC10031012);\n}","handlingStrategy":"retry","validationCode":"Preconditions.checkNotNull(optUploadFileReqDto, \"upload request required\");\n// optionally check file size/type before calling the remote service","typeGuard":null,"tryCatchPattern":"try {\n    OptUploadFileRespDto resp = opcOssService.uploadFile(req);\n} catch (OmcBizException e) {\n    if (e.getCode() == 10031012) { /* surface upload failure; check opc-oss health */ }\n    else throw e;\n}","preventionTips":["Monitor opc-oss service health/registration before traffic peaks","Enforce file size/type limits at the edge before forwarding to OSS","Keep OSS credentials and bucket config validated in each environment","Add Feign timeouts and bounded retries for transient RPC failures"],"tags":["file-upload","feign","oss","rpc"],"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"}