redis使用分布式锁记

使用redis分布式锁记 背景介绍 在项目中使用封装的redis锁注解中,会出现异常信息。抛出拿分布式锁异常。 跟源码 其中lock对象为false的情况下会抛出Get redis lock failed的业务异常 @Around("redisLockPoint() && @annotation(redisLock)") public Object around(ProceedingJoinPoint pjp, RedisLock redisLock) throws Throwable { String key = redisLock.key(); if (StringUtils.isBlank(key)) { Object[] args = pjp.getArgs(); if (redisLock.bindType().equals(RedisLock.BindType.DEFAULT)) { key = StringUtils.join(args); } else if (redisLock.bindType().equals(RedisLock.BindType.ARGS_INDEX)) { key = getArgsKey(redisLock, args); } else if (redisLock.bindType().equals(RedisLock.BindType.OBJECT_PROPERTIES)) { key = getObjectPropertiesKey(redisLock, args); } } Assert.hasText(key, "key does not exist"); String prefix = redisLock.prefix()+"_"; boolean lock = distributedRedisLock.lock(prefix + key, redisLock.

bug 记录

bug清单表格 1、springboot上传文件,报流关闭错误 现象 : springboot上传文件,报流关闭错误 原因 : 项目中增加了全局的GlobalWebAppConfig,其中的配置导致流关闭失效 解决方式 : 移除@EnableWebMvc注解 过程总结 : 本地复现 定位问题点 (移除pom),注释依赖 确定问题点确实是新增配置 网上搜索解决方式 记录时间 : 2021-08-21 2、某些sql会在limit后追加一个limit,导致查询sql报错 现象 : 某些sql会在limit后追加一个limit,导致查询sql报错 原因 : PageHelper 非安全调用方式,项目中使用方式为PageHelper.startPage,此种方式背后实现原理为: ThreadLocal设置线程局部变量,tomcat线程次会缓存请求,可能导致threadlocal中的线程变量被其他线程访问到 解决方式 : springmvc层增加全局的拦截器, 然后手动移除一下pageHelper的变量 过程总结 : 定位问题 网上搜索确实发现limit可能会是pagehelper导致 再次定位threadlocal设置变量,设置tomcat工作线程设置为1个 本地手写分页复现场景,分页参数设置,未查询数据库,手动触发报错 增加全局分页拦截器解决 记录时间 : 2021-08-21 3、请求接口,返回90044错误 现象 : 请求接口,返回90044错误 原因 : 2.0网关配置中,只建立了bi的服务,在角色那一栏并未配置bi相关的服务 解决方式 : 2.0网关配置erp-api的相关权限 1、定位问题9004 2、查询9004为请求接口超出授权范围 3、访问灰度复现出改问题 过程总结 : 定位问题9004 查询9004为请求接口超出授权范围 访问灰度复现出改问题 找运维老师确认2.0网关的配置问题 确认配置问题、增加配置 记录时间 : 2021-08-23 4、小程序获取手机号授权,并未生成响应的学员记录 现象 : 小程序获取手机号授权,并未生成响应的学员记录 原因 : 营销服务调用crm服务,crm服务新增授权类型客户的时候没有写入电话字段 解决方式 : 入口出增加电话字段 过程总结 : httplog寻找入参数, ```sql select * from alc-http-log.