2017-03-30 IRC 会议总结
概述
笔记/简短主题
- BlueMatt 记录了上周 6 个 被阻塞和需要审查的 PR 中的 2 个已合并,可以做得更好。Wumpus 为会议中提到的具有优先级的 PR 创建了一个 高优先级审查 的 GitHub 项目页面。
- 有 11 个合并被标记为 0.14.1,以及 3 个开放的 PR。一旦这些合并到 0.14.1 中,应该就可以使用了。
主要主题
- 缓慢的单元测试
- 处理 abortnode / ConnectTip / DisconnectTip 失败
- 高优先级审查
缓慢的单元测试
背景
比特币核心提供了一个 makefile 目标 check
,它运行项目的单元测试。随着时间的推移,该项目编写了越来越多的通过 RPC 接口执行的集成测试,这些测试由 Travis 持续集成 (CI) 服务器自动运行,该服务器测试每个比特币核心拉取请求,并且可以通过执行 qa/pull-tester/rpc-tests.py
手动运行。
如 2017-03-16 会议中之前讨论的,这些测试作为一个整体目前可能花费的时间过长。
会议评论
Wumpus 对最慢的单元测试进行了 概述。其中一些已经有人在处理或有 PR 使其更快。
我们还可以为单元测试引入一个 -extended 模式,该模式执行额外的彻底测试,这些测试不应每次都运行。扩展模式应成为发布流程的一部分(并由 gitian 运行)和/或每天在 master 分支上运行一次。
Jonasschnelli 拥有一个具有良好 Web UI 的构建服务器,该服务器每天在 https://bitcoin.jonasschnelli.ch/ 进行 gitian 构建。
Jnewbery 指出,Travis CI 服务目前正在失败,因为我们已将其设置为每天运行一次扩展测试,因此我们正在清除所有在 Travis 上始终失败的扩展测试。一旦 PR #10114 和 #10072 合并,这些每日运行应该会通过 Travis。
会议结论
- 对于标准的
make check
,有一个每测试用例最多约 1 秒的指导方针,并为单元测试提供一个具有更广泛测试的扩展模式。
处理 abortnode / ConnectTip / DisconnectTip 失败
背景
Sdaftuar 有一个开放的 PR (#9208),它在链重组(重新组织)后提高了性能,其中节点发现了一个新的最长有效链,该链排除了先前认为是最长有效链的区块(该区块将成为孤块)。目前,我们尝试将每个孤块中的交易重新添加到 mempool 中,即使这些交易中的许多很可能在新发现的区块中重新出现。 #9208 将这些交易存储在单独的“断开连接池”中以供以后处理。
会议评论
BlueMatt 提出了 ConnectTip 或 DisconnectTip 返回 false 时的一些边缘情况,在这些情况下,我们现在断言() 而不是 AbortNode()。随后进行了一些更广泛的讨论,讨论何时使用 AbortNode() 和何时使用 Abort()/assert(),以及向用户发出错误已发生的最佳方法。AbortNode() 允许我们退出并显示一条消息以通知用户,因此理想情况下,只有严重错误才会导致 Abort()/Assert()。
会议结论
- 将 AbortNode() 重命名为 ShutdownSoon() 并确保磁盘损坏使用其他方法。
高优先级审查
所有标记为 0.14.1 的 PR 都应具有优先级
Sipa 补充说,他希望在某个时候看到 #9792(FastRandomContext 改进并切换到 ChaCha20)被包含进来,以进一步消除对 OpenSSL 的依赖。
Gmaxwell 建议重新打开他的 PR #9424,该 PR 将日志记录类别更改为布尔标志而不是字符串。这将使像 #10123 这样的 PR 的使用更加容易,后者允许您从调试日志中排除某些组件。Cfields 补充说,他希望对网络消息做类似的事情。
喜剧效果
wumpus if BlueMatt can make it work faster that's great, but don't silently kill the program on every error
gmaxwell wumpus: how about every other error?
9:48 BlueMatt so maybe the solution is AbortNode gets renamed to ShutdownSoon() and use make sure disk corruption is something different?
...
9:53 BlueMatt <BlueMatt> so maybe the solution is AbortNode gets renamed to ShutdownSoon() and use make sure disk corruption is something different?
...
9:57 BlueMatt ok, soooo, acks on:<BlueMatt> <BlueMatt> so maybe the solution is AbortNode gets renamed to ShutdownSoon() and use make sure disk corruption is something different?
9:58 jeremyrubin BlueMatt: maybe if you paste it again
9:58 BlueMatt jeremyrubin: ok, <BlueMatt> ok, soooo, acks on:<BlueMatt> <BlueMatt> so maybe the solution is AbortNode gets renamed to ShutdownSoon() and use make sure disk corruption is something different?
jtimon it seems it's time to abort the meeting
wumpus #endmeeting
BlueMatt wumpus: we need to change that to #abort()
gmaxwell But I wanted to cleanly flush!
参与者
IRC 昵称 | 姓名/匿名 |
---|---|
gmaxwell | Gregory Maxwell |
wumpus | Wladimir van der Laan |
jonasschnelli | Jonas Schnelli |
sipa | Pieter Wuille |
BlueMatt | Matt Corallo |
jtimon | Jorge Timón |
cfields | Cory Fields |
achow101 | Andrew Chow |
jeremyrubin | Jeremy Rubin |
sdaftuar | Suhas Daftuar |
MarcoFalke | Marco Falke |
jnewbery | John Newbery |
morcos | Alex Morcos |
instagibbs | Gregory Sanders |
Chris_Stewart_5 | Chris Stewart |
免责声明
此总结是在未征求任何讨论参与者意见的情况下编写的,因此任何错误都是总结作者的过错,而不是讨论参与者的过错。