FeignException: Status(401) reading XXXfeign# - 2021-10-11

博客内容讲述了在微服务架构中遇到的一个Hystrix异常,具体表现为`SecKillOrderFeign#add`方法调用失败且没有备选方案。尽管401无权限错误提示表明了鉴权问题,但经过检查,依赖、启动类注解和拦截器配置都未发现明显问题。目前,内部feign调用在service_seckill微服务中能正常工作,暗示问题可能出在网关鉴权环节。作者计划深入复习网关鉴权知识以找到解决方案。

今日份bug........

一. 报错如下:

com.netflix.hystrix.exception.HystrixRuntimeException: SecKillOrderFeign#add(String,Long) failed and no fallback available.

 二. 提示: 401无权限调用SecKillOrderFeign, 但是依赖, 启动类注解, 拦截器, 路径都没问题

 

 三. 暂时找不到原因 -> 测试service_seckill微服务内部feign调用SekillOrderController是可以的

四. 挖坑: 再复习一遍网关鉴权, 回来填坑

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 数据库“Supcon”的事务日志已满,原因为“LOG_BACKUP”。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262) javax.ws.rs.NotFoundException: HTTP 404 Not Found at javax.ws.rs.WebApplicationException.<init>(WebApplicationException.java:162) at javax.ws.rs.ClientErrorException.<init>(ClientErrorException.java:94) at javax.ws.rs.NotFoundException.<init>(NotFoundException.java:58) [2025-05-12 05:20:00,241][ERROR][scheduling-1][com.supcon.supfusion.auth.service.task.AuthOnlionLoginTask][authentication-integration][unknown] - online user check e=org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 数据库“Supcon”的事务日志已满,原因为“LOG_BACKUP”。 ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 数据库“Supcon”的事务日志已满,原因为“LOG_BACKUP”。 ; uncategorized SQLException; SQL state [S0002]; error code [9002]; 数据库“Supcon”的事务日志已满,原因为“LOG_BACKUP”。; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 数据库“Supcon”的事务日志已满,原因为“LOG_BACKUP”。 at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88) Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 数据库“Supcon”的事务日志已满,原因为“LOG_BACKUP”。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) feign.FeignException: status 400 reading TokenClient#refreshToken(String,Map) at feign.FeignException.errorStatus(FeignException.java:78) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34)
05-13
com.supcon.supfusion.framework.cloud.common.exception.BizException: [100000007]APP安装器服务异常,请联系系统管理员 at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:75) at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:149) at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:78) at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103) at com.sun.proxy.$Proxy299.clearInstallingTaskByApp(Unknown Source) at com.supcon.orchid.entityconf.services.imps.AppTaskServiceImpl.createTask(AppTaskServiceImpl.java:297) at com.supcon.orchid.entityconf.services.imps.AppTaskServiceImpl.install(AppTaskServiceImpl.java:163) at com.supcon.orchid.entityconf.services.imps.AppTaskServiceImpl.reInstall(AppTaskServiceImpl.java:120) at com.supcon.orchid.entityconf.services.imps.AppTaskServiceImpl.reInstallStart(AppTaskServiceImpl.java:140) at com.supcon.orchid.entityconf.services.imps.AppTaskServiceImpl.task(AppTaskServiceImpl.java:82) at com.supcon.orchid.entityconf.services.impl.ModuleAppInstallTaskService.doAppInstall(ModuleAppInstallTaskService.java:77) at com.supcon.orchid.entityconf.services.impl.ModuleAppInstallTaskService.access$200(ModuleAppInstallTaskService.java:36) at com.supcon.orchid.entityconf.services.impl.ModuleAppInstallTaskService$InstallTask.call(ModuleAppInstallTaskService.java:130) at com.supcon.orchid.entityconf.services.impl.ModuleAppInstallTaskService$InstallTask.call(ModuleAppInstallTaskService.java:113) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: feign.FeignException: status 500 reading AppInstallerService#clearInstallingTaskByApp(String) at feign.FeignException.errorStatus(FeignException.java:78) at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:93) at com.supcon.supfusion.framework.cloud.rpc.feign.FeignExceptionErrorDecoder.decode(FeignExceptionErrorDecoder.java:34) ... 19 common frames omitted
07-05
当出现 `feign.FeignException: status 400 reading OrganizationProvider#listByLikeNameOrUserIds(String,List)` 错误时,可参考以下可能的解决方法: 1. **确保请求注解和参数声明正确**:参考 `feign.FeignException: status 400` 的解决思路,要保证 `@RequestMapping` 注解中的 `method` 属性正确声明,同时方法参数使用 `@RequestParam` 进行声明。例如: ```java @RequestMapping(value = "listByLikeNameOrUserIds", method = RequestMethod.GET) public ResponseEntity<List<SomeType>> listByLikeNameOrUserIds(@RequestParam(value = "name") String name, @RequestParam(value = "userIds") List<Long> userIds) { // 方法实现 } ``` 2. **检查 Feign 客户端配置**:在启动类开启 `@EnableFeignClients` 注解,并将 `basePackages` 属性指向 Feign 客户端的包路径。同时,在 Feign 服务器提供方开启 `@FeignClient` 注解,声明其为 Feign 远程服务提供方,保证声明式方法中的请求注解在对应的 `Controller` 注解中有对应的方法,避免出现 404 类似的请求匹配问题 [^1]。 3. **检查请求参数传递**:确认调用 `listByLikeNameOrUserIds` 方法时传递的参数类型和数量与服务端方法定义一致。如果参数类型不匹配或缺失参数,可能会导致 400 错误。 4. **检查 Feign 构造请求的注解**:确保在 Feign 客户端的方法定义中使用了正确的注解(如 `@RequestMapping`、`@RequestParam`、`@PathVariable` 或 `@RequestHeader` 等)来构造 HTTP 请求。若缺少相关注解,OpenFeign 在构造请求时可能会报错 [^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值