taosdata / taosdata/TDengine

td夸多个版本搬迁,导致 vnode12 损坏,然后整个taosd 挂掉

Open
#35,387 2 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
C
Stars
25.1k
Forks
5k
Avg merge
4d 59m
Merged PRs (30d)
7

Description

Bug Description
1.3.3.3.0 ,通过服务器镜像迁移到新的服务器上,启动。
2.升级到3.3.6.13 版本,也就是现在的稳定版本
3.升级之后,跑了一段时间,发现string类型被jdbc内部转换成了byte[],处于性能考虑,查看稳定,发现最新版本是ws协议的时候,可以添加参数,内部转换
4.然后直接升级到3.4.1.13.community,跑了一段时间出现了
问题1:客户端内存异常频繁OOM,
我的解决方案:查询官方jdbc稳定,修改了部分代码:
AbsWSPreparedStatement.java
在101 行添加了个代码

    if (this.resultSet != null && !this.resultSet.isClosed()) {
        this.resultSet.close();
    }

重新构建了jdbc 的jar
晚上7点左右使用了最新的jdbc包,刚开始一切正常,到了凌晨5点左右,taosd 挂了

下面这个是日志

Image

分析的结果
vnode12 的 TSDB/cache 数据格式异常,导致 taosd 在恢复提交阶段直接 FATAL 退出。

还有最后一点,不得不吐槽一点,
你的每个版本升级,都像是安装一个新的数据库,不是这里有问题,就是哪里不兼容,
为什么要搞这种毁灭性的升级。

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read the reported vnode12 recovery log and the change in AbsWSPreparedStatement.java around line 101 first. Trace the stated 1.3.3.3.0-to-3.3.6.13-to-3.4.1.13 upgrade sequence and the JDBC change, then determine which condition corrupts the TSDB/cache data and causes taosd to exit during recovery; done means the cause and a validated prevention are documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, java
Domain
databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.