endlessroad1991 最近的时间轴更新
endlessroad1991

endlessroad1991

V2EX 第 76960 号会员,加入于 2014-10-13 14:41:00 +08:00
endlessroad1991 最近回复了
2020-06-08 00:53:25 +08:00
回复了 yzongyue 创建的主题 程序员 我也终于刷完 MIT 6.824 2020 了
@yzongyue 啊哈,你是对的。

你当时 fail 的哪个 test ?是正确性问题(两个 server 同样 index,apply 了不同的 log )还是某个 test 没能在规定时间内完成选主?
2020-05-19 03:08:37 +08:00
回复了 yzongyue 创建的主题 程序员 我也终于刷完 MIT 6.824 2020 了
"如果把 rf.startElection() inline,就不会出现这个 bug 。“

请忽略这句话。。就算把 rf.startElection() inline,在那个 function 里面,仍然还有别的 function call 。所以仍然可能被 go runtime scheduler 切换出去。所以 bug 仍然可能存在
2020-05-19 03:05:54 +08:00
回复了 yzongyue 创建的主题 程序员 我也终于刷完 MIT 6.824 2020 了
回复题主,帮你抓了个 bug 。

https://github.com/yzongyue/6.824-golabs-2020/blob/yzy/src/raft/raft_vote.go#L125 这里在 rf.changeRole()之前,应该确保 rf.role == Follower && rf.voteFor == -1 。

否则,该节点在 rf.changeRole()之前可能已经 approve 了其他节点在当前 term 的 vote request (并修改了 rf.voteFor ),然后在这里 rf.changeRole()的时候又投票给自己( rf.voteFor = rf.me )。这样该节点就会投出两个不同的票,从而可能造成当前 term 有两个不同节点成为 leader 的情况。

详细例子:假设 3 个节点 A,B,C 。
1. A 成为 candidate, 发送 vote request 给 B 。
2. B 收到 A 的 vote request 时仍然是 follower,因此批准 vote request 。
3. A 收到 B 的 approval,认为自己成为 leader 。
4. B 成为 candidate,并收到 C 的 approval,认为自己成为 leader 。

这里有一个问题是,为什么 2 之后,4 仍然可能发生?在 B 批准 A 的 vote request 时,B 重置了自己的 electionTimer: https://github.com/yzongyue/6.824-golabs-2020/blob/yzy/src/raft/raft_vote.go#L67 。所以 B 不应该再触发将自己变为 candidate 的逻辑 https://github.com/yzongyue/6.824-golabs-2020/blob/yzy/src/raft/raft.go#L415

我的理解是,2 和 4 之中,事实上先发生的是 4 ( B 触发自己变为 candidate 的逻辑 https://github.com/yzongyue/6.824-golabs-2020/blob/yzy/src/raft/raft.go#L415 )。但很不幸,在调用 rf.startElection()时,go runtime scheduler 将本 goroutine 暂停,而切换到执行 2 的 goroutine (处理 A 的 vote request )!如果把 rf.startElection() inline,就不会出现这个 bug 。这也能解释为什么这个 bug 很难复现:这依赖于 go runtime scheduler 对这些 concurrent events 的执行时机。
2020-03-28 04:17:11 +08:00
回复了 sszxcss 创建的主题 GitHub 轮到劫持 github.com 了
以后说不定就是 ip+域名访问全面白名单化。白名单之内通过 mitm 保证内容可被分析,白名单之外直接掐断😃
早年从 windows 笔记本切换到 macbook air 的感觉:

cpu 不用太强,但硬盘一定要是 ssd 或 mac 用的那种 flash。
2017-03-17 19:23:24 +08:00
回复了 2zH 创建的主题 React React 不做 SSR 如何让百度快照正确显示页面
或多或少会有执行 javascript 的能力。。

手抖
2017-03-17 19:22:48 +08:00
回复了 2zH 创建的主题 React React 不做 SSR 如何让百度快照正确显示页面
现在的搜索引擎爬虫或多或少会有 javasceipt 的能力,尤其是对排名较高的站点
2017-03-17 00:18:36 +08:00
回复了 upygad 创建的主题 程序员 插件推荐|WordPress 远程附件上传插件
@Troevil 你这么一说才发现。。 666
2016-11-16 11:45:51 +08:00
回复了 endlessroad1991 创建的主题 V2EX V 站使用 Google OAuth 登陆时 504
2016-10-24 09:20:19 +08:00
回复了 johnsneakers 创建的主题 随想 今晚,职业污点+1
一般上-Wall -Wextra -Werror ,虽然一开始觉得有些 warning 很烦,习惯了之后出类似 bug 的机会小不少。

然后还有 address sanitizer 检测非法内存访问、内存泄漏之类的, thread sanitizer 检测 data race 。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4612 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 17ms · UTC 10:10 · PVG 18:10 · LAX 02:10 · JFK 05:10
Developed with CodeLauncher
♥ Do have faith in what you're doing.