This Week on TiDB 20211018

原文链接

欢迎来到新一期的 This Week on TiDB 栏目!TiDB 是一个开源的 MySQL 协议兼容的分布式数据库,支持 HTAP 即混合事务和分析处理。

这个栏目是个人向的 TiDB 观察评论,如果你看到了有趣的事情想让这个栏目评论,或者自己做了有意思的事情想分享出来,欢迎私信联系我或者在下方链接的 issue 中提出。如果你有意了解或加入 TiDB 社区,TiDB 社区也非常欢迎贡献者。

Contribute to TiDB

Pending contents for 20211025

首先看到 TiDB Internals 论坛上的几个讨论。

Proposal: make parser support all the charsets

TiDB Committer @xiongjiwei 提出了 TiDB 在 Parser 阶段支持所有 MySQL 支持的字符集的方案。这也是 TiDB 支持更丰富的应用场景的一步,如果完成就是对 GBK 的支持的一个关键路标。

Proposal: Use “gh pr checkout” to replace checkout-pr-branch.sh

TiKV Reviewer @Xuanwo 对 TiDB 仓库提出了建议,更新年代较久的自制脚本,转而建议采用官方维护的命令行工具来完成常见的代码仓库操作。

其实 TiDB 仓库里有一系列未经审视的仓库设置和构建配置,如果你对构建 Golang 项目有相应的经验,或者想在 TiDB 代码仓库的基础上锻炼自己构建项目的能力,欢迎点开 pingcap/tidb 探索。

Proposal: add issue number to PR title

config: enable format-checker for tikv/pd and require commit message with issue number

TiDB 和 TiKV 社区加强 PR 和 issue 的关联,引导 contributor 关注到要解决的问题而不仅仅是代码的提案,在 TiKV 社区已经有了共识,目前在上线检查规则试点的阶段。

Adopt new DCO validator

DCO Expected — Waiting for status to be reported

Actions DCO

最近刚开始看 TiKV 的代码,从 Infra 相关的内容切入。

广泛使用的 DCO GitHub App 缺乏维护导致公用的实例不再持续在线,大约只能再撑四周。我在周末的时候没找到好的 GitHub Actions 替代,手写了一个 Actions DCO 来用。GitHub Actions 可以利用 GitHub 提供的实例运行,不需要额外的定制化 App 部署和资源。如果你的项目也碰到了类似的问题,可以考虑这个解决方案。

接下来看几个 TiDB 上开发活动。

Tracking issue for enabling more linters

TiDB Maintainer @tangenta 对 TiDB 上的检查规则做了梳理,希望能够尽可能多的用业内公认的检查规则自动化守护代码质量。

这里面的工作包括启用规则,修复当前代码库上的冲突,以及遗留的自动化设置问题。本身是一个很好的切入 TiDB 代码的点,想要上手 TiDB 开发的同学可以关注一下。

Global variables rule them ALL

Proposal: Global variables rule them ALL!

TiDB Committer @crazycs520 开始把之前 @SunRunAway 的提案开始落实到 TiDB 的 codebase 上。主要是希望重新考虑 TiDB 管理全局变量的方式,尤其是加载和同步的方式,避免 TiDB 当前在全局变量多实例一致性上的问题。

temporary table validates ENGINE (inconsistent with regular table)

TiDB Committer @morgo 发现了此前 @djshow832@tiancaiamao 主导设计和实现的临时表方案对 ENGINE 属性的不兼容表现,随后得到了修复。

这个 issue 其实是一类 TiDB 和 MySQL 不同的问题,即 MySQL 的表引擎替换能力在 TiDB 这边没有实际的实现,目前 TiDB 基本是同一套存储方案,即基于 TiKV 的方案。即使要从 TiFlash 上读取数据,也不是通过 ENGINE 的方式来实现的,当然也不能这么实现,因为 TiFlash 上不是孤立的存储,而是 TiKV 的一份拷贝。

TiDB 实际上并不会关注 ENGINE 属性,但是在实际处理的时候会有一些相应的代码逻辑做 sanity check 拦截。如果你有兴趣找到所有此类逻辑并做一个调研报告发布到论坛上,推动 TiDB 在这点上的行为一致性,肯定会是一个很有价值的贡献。

Leak test pdutil.TestScheduler

TiDB Committer @djshow832 发现了在测试迁移的过程中暴露出来的新问题。

测试迁移真不是一个简单的机械化工作,t.Parallelgoleak.VerifyMain 也不是魔法咒语。我和这个工作的几位主要的参与者都希望尽可能多的让测试并行跑起来以改善效率和压测代码的线程安全性,检查出尽可能多的线程泄露风险。但是对于每一个迁移测试的同学来说,也要注意这两个原则背后的反例,即并发测试可能引入的不稳定测试以及性能回退,还有线程泄露检查的准确性需要 contributor 来保证。

最后,介绍几个正在评审中的 Dev Guide 章节,欢迎任何 contributor 提前试读并提出宝贵意见。

以及已经合并的来自 TiKV Maintainer @skyzh 关于 Coprocessor 的精彩介绍

TiKV Coprocessor

指正一个问题

Proposal: make parser support all the charsets

这个 proposal 仅讨论让 parser 支持所有的 MySQL 支持的字符集。TiDB 支持字符集功能不在讨论范围内。

Thanks! 让我改改