seata学习-记录一次bug


问题描述

最近在项目生产环境部署过程中,发现了一个很奇怪的错误。错误内容如下图所示,大致看下,也就是一条很简单update SQL语句居然无法执行,报空指针异常。
seata的报错
项目中的报错


解决思路

debug了一段时间,发现是在生成update的sql set值的时候报错了,于是考虑是字段问题,不断百度之后,发现了跟我相同的博主遇到了相同的问题。通过代码情况分析,最终确定了就是seata的问题。
由于seata将字段统一转成小写了,并作为map的key,所以导致获取的时候,拿数据库字段名取获取时获取不到。通过进一步分析,其还与druid连接池中的API从ResultSet中获取列名有关系,低版本MySQL,获取到的列名以数据库列大小写为准,而8.0.22版本数据库却以update中的字段名大小写为准。

原文链接:https://blog.csdn.net/qq_36381800/article/details/111404243

在看完该文章后,确定了更是seata的问题。但我不想对代码进行修改,于是去seata官网查看了最新版本1.5.2。很幸运的,1.5.2fix了该问题。关于seata升级可以看我的另一篇文章,记录了升级步骤。1.4.2->1.5.2


1.5.2 更新如下:

BUG 修复

[ #3497 ] 修复 tcc 第二阶段响应超时异常
[ #3686 ] 修复 Apollo 的 NPE 和错误的集群名称
[ #3702 ] 修复一些评论
[ #3716 ] 修复 findTargetClass 方法中的问题
[ #3717 ] 修复区间错字
[ #3773 ] 修复 consul 找不到 tc 集群
[ #3695 ] 修复 mariadb 无法创建 XA 连接
[ #3783 ] 修复 store 模式不生效的问题
[ #3740 ] 修复事务结束LocalThread时未清除的问题Saga
[ #3792 ] 修复 Server 找不到 redis-host 属性
[ #3828 ] 修复 StringUtils StackOverflowError
[ #3817 ] 修复 TC SkyWalking 拓扑调用节点不聚集的问题
[ #3803 ] 修复 ReflectionUtil 抛出意外异常
[ #3879 ] 修复 postgresql 多模式抛出未找到通道异常
[ #3881 ] 修复 getConfig 使用不同的默认值返回第一个
[ #3897 ] 修复 FastjsonUndoLogParserLocalDataTime 类型无法回滚的问题
[ #3901 ] 修复 seataio/seata-server servlet-api 冲突
[ #3931 ] 修复转储 jvm 内存进行分析时错误的路径和文件名
[ #3978 ] 修复未来超时导致的 NPE
[ #4266 ] 修复 oracle 中修改的行数大于 1000 时 register 分支和释放锁失败
[ #3949 ] 修复nacos-config.py不跳过空白选项的问题。修复拆分选项可能导致内容丢失的问题
[ #3988 ] 修复密码有特殊字符时 nacos 找不到用户的问题
[ #3998 ] 修复 jedis multi.exec 的 NPE
[ #4011 ] 修复 springboot 中无法获取分布式锁表属性的问题
[ #4025 ] 修复潜在的数据库资源泄漏
[ #4023 ]修复dubbo部分场景xid未清除的问题
[ #4039 ] 修复本地事务抛出异常后 RM 没有清除 XID
[ #4032 ] 修复 Seata 服务器使用 ShutdownHook 销毁 ApplicationContext 已经关闭的问题
[ #4074 ] 修复防止 XA 模式资源暂停
[ #4107 ] 修复项目构建过程中的死锁问题
[ #4158 ] 修复 logback 无法加载RPC_PORT
[ #4162 ] 修复 redis 注册表的正确内置属性
[ #4165 ] 修复obj 为原始数据数组时的StringUtils.toString(obj)抛出问题ClassCastException
[ #4169 ] 修复 xa 模式 originalConnection 已关闭,导致 PhaseTwo 无法执行的问题
[ #4177 ] 修复意外释放全局锁的问题
[ #4174 ] 修复删除 undo 日志连接已关闭
[ #4189 ] 修复kafka-appender.xml和logstash-appender.xml
[ #4213 ] 修复“sessionMode”代码不执行问题
[ #4220zstd ] 修复压缩器的一些问题并添加kotlin-maven-plugin
[ #4222 ] 修复插入字段列表为空时无法回滚的问题
[ #4253 ] 更新执行器存储实际修改的列,但不仅是设置条件下的列
[ #4276 ] 修复 seata-test 模块 UT 不工作
[ #4278 ] 修复 mysql 的 Blob/Clob/NClob 数据类型无法反序列化的问题
[ #4302 ] 修复其他 ORM 可能无法获取自增主键值的问题
[ #4233 ] 修复特定情况下锁和分支的数据残留问题。
[ #4308 ] 修复多个 Postgresql 模式下同一张表的 TableMetaCache 解析问题
[ #4326 ] 修复使用 mariadb 驱动时无法构建 Executor
[ #4355 ] 修复 mysql-loadbalance 资源 id 错误
[ #4310 ] 修复通过“select last_insert_id”获取 MySQL 数据库自增 ID 失败的问题
[ #4331 ] 修复使用 ONLY_CARE_UPDATE_COLUMNS 配置时可能出现的脏写检查异常
[ #4228 ] 修复 xa 模式下由于选择其他 ip 作为通道替代导致的资源暂停
[ #4408 ] 修复容器 env 中无效的环境变量
[ #4441 ] 修复 redis 模式下流水线资源不关闭的问题,添加 branchSession 判断 branchSessions 不为空
[ #4438 ] 修复develop分支文件模式下延迟删除GlobalSession无法正常删除的问题
[ #4432 ] 修复无法获取某些远程配置的问题
[ #4452 ] 修复 'service.disableGlobalTransaction' 配置的更改日志
[ #4449 ] 修复 redis 模式页面 npe 并优化 get globalSession 平均
[ #4459 ] 修复开发分支的 oracle 和 pgsql 获取前后图失败的问题
[ #4471 ] 在分支 'develop' 中,修复 service.vgroupMapping 更改时的错误
[ #4474 ] 修复 Mysql 多位 Bit 类型字段回滚错误
[ #4492 ] 修复使用开发分支的 eureka 时无法动态更新集群列表的问题
[ #4535 ] 修复 FileSessionManagerTest 失败
[ #4561 ] 修复 allSessions/findGlobalSessions 可能返回 null 并导致 npe
[ #4505 ] 修复时间数据类型的 fastjson 序列化
[ #4579 ] 修复 MySQLInsertOrUpdateExecutor 的 prepareUndoLogAll
[ #4005 ] 修复 PK 约束名称与 PK 唯一索引名称不同的问题
[ #4062 ] 修复 saga 复杂参数反序列化问题
[ #4199 ] 修复 rpc tm 请求超时
[ #4352 ] 修复 sql 解析器的一些问题
[ #4487 ] 修复移除分页 hideOnlyOnePage 属性
[ #4449 ] 修复优化 redis 限制并修复 redis 页面错误
[ #4608 ] 修复测试用例
[ #3110 ] 修复单元测试的问题

期间本人也遇到过
1.nacos与seata整合,nacos密码中含有特殊符号提示用户不存在的问题
2.FastjsonUndoLogParser 中 LocalDataTime 类型无法回滚的问题
3.LocalDataTime 序列化问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫南北。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值