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

免责声明

此总结是在未征求任何讨论参与者意见的情况下编写的,因此任何错误都是总结作者的过错,而不是讨论参与者的过错。