TiDB Weekly|This Week on TiDB 20210830

欢迎来到新一期的 This Week on TiDB 栏目!TiDB 是一个开源的 MySQL 协议兼容的分布式数据库,支持 HTAP 即混合事务和分析处理。这个栏目是 TiDB 开发进展和社区新闻的非官方周刊窗口,如果你想将自己看到或者正在做的工作也通过这个窗口发布,欢迎私信联系我或者在下方链接的 issue 中提出。如果你有意了解或加入 TiDB 社区,TiDB 社区也非常欢迎贡献者。

Contribute to TiDB

Pending contents for 20210906

Weekly 的发布时间改到周一,虽然不知道具体是为了什么,但是多了今天一天突然发现了不少有意思的事情。

Call for help: refactoring execution engine on unistore

比如小虎 @ichn-hu 重构 unistore 的执行逻辑的设计文档就是今天发出来的,这个工作其实挺好的衔接了从 Restructure Tests 工作熟悉了基本的 Golang 技能和 TiDB 的基础知识到进一步深入的了解 TiDB 的内核。

谢谢小虎!感兴趣的同学可以关注一波。

Tracking issue for restructure tests

Restructure Tests 的工作,util 目录下的所有测试终于是迁移完了,目前剩下来的都是比较硬核的模块。跟我之前的预计差不多,通过这一轮工作下来会有一些 contributor 愿意啃这些硬骨头或者进一步了解 TiDB 的内核逻辑。

例如之前提过的 @feitian124 就接下了 statistics 的迁移工作,统计信息是查询优化的重要基石,同时又是跟 planner 相比较为独立的一部分,很适合做切入点,期待他后续的进展。

statistics 目前在 TiDB Dev Guide 上有一篇 Review 中的介绍,欢迎阅读。

understanding-tidb: add introduction for statistics

不过这篇文章更像挑几个统计信息实现的数据结构讲一讲的博文,或许还需要其他 contributor 支持改进。

例如另一位 contributor @yedamao 就自然而然地开始了 server 的迁移工作,这部分逻辑是 TiDB 服务端启停的逻辑,处理建立连接等工作,向后对接 session 模块维护复杂的会话状态。

关于建立连接的内容,在 TiDB Dev Guide 的 The Life cycle of a Statement 一节中略有提及,也可以读读看。

The Life cycle of a Statement

例如,又是今天发生的一件事。从上周末开始,有一位活跃的在多个开源社区贡献的印度老哥也加入了 Restructure Tests 的工作,接下了 ddl 的迁移工作。

虽然他一上来就啃硬骨头我有点担心,不过有趣的是他把整个参与的过程都记录到了自己的一个仓库里,感兴趣的同学可以看一下,我觉得这种方式还蛮有意思的。

STORY.md

这位 contributor 我看到的还在两个仓库上有活跃,恰好跟最近的两个大动作相关。

contributors: fix help-wanted issues link in readme

其之一是个小改动,不过 pingcap/community 下有一个大改动。

Proposal: Lightweight and GitHub Friendly Special Interest Group

就是我们把 TiDB 社区品类繁多的 SIG 做了一次合并,并且借鉴了 TiKV 社区的经验做了 SIG 到 repository 的映射。这里的背景比较复杂,可以阅读 issue 的内容,或者参考一篇介绍这些内容的文章。

开源社区的治理模型应当因地制宜

其实这个工作我本想等 TiKV 积累一个季度的经验以后再推行,不过 TiKV 的 promotion 也比较流畅,没有遇到什么问题。TiDB 的 contributor 苦 SIG 分裂 pingcap/tidb repo 久矣,强烈要求所以就反馈到 TOC 推了。

Fix Failing pipeline - tikv_ghpr_integration_common_test

另一件事是 TiKV 主仓库 master ci 挂掉的事,也是由这位印度老哥反馈的。我们才发现 infra team 对 CI 的操作没有进行及时的同步和讨论,导致了一些问题。虽然补了一个 announcement 贴子,但是之前缺乏讨论其实有分歧的一些问题,也不得不在变更已经实装之后又翻出来讨论。

Announcing remove required integration test check when merge pr

TiDB 和 TiKV 的 CI 确实是多灾多难。此前的某次社区调查当中,首当其冲 complain 的就是 CI false negative 的问题。希望整个社区一起努力,解决不稳定测试的问题,缓解 CI 的压力,打造一个稳定可靠的 CI 环境。

关于测试,需要介绍一下 TiDB Dev Guide 当中讲测试的章节。

Write and run unit tests

TiDB 的测试需要跟自研的测试钩子 failpoints 库结合,有一些领域知识需要了解。另外这一章节也介绍了编写测试的一般方法和一些调试测试,定位测试失败的技巧。

夜天之书 #3

关于 Golang 测试的一些细节讨论,以及 Restructure Tests 背后的逻辑,欢迎阅读我上周撰写的一篇文章。

When will TiKV-python-client release?

Support TiKV as online store

最后提一下 TiKV 生态的发展,我们看到了对 TiKV Python Client 的热切期待,计划在接下来的时间里加大对 TiKV Python Client 的投入。

4赞