这个小结晚了8天,Lab3在20号已经完成了。

11号可以稳定过3A,3B一直持续到15号,只剩一个测试经常跑不过,但更细致的检查是会有大量goroutine泄露。还发现rpc的响应时间还会影响我的测试结果,我的rpc测试延迟明显过高(花了好多时间来分析,最后发现是因为用了-race检查,我说开始考虑先忽略次要问题,但是10x的延迟是在觉得是个大问题,得先解决,等最后发现是-race的问题,深刻理解了-race会10x降速程序),为此特别加了对所有的rpc延迟统计、所有临界区、labgob、persister延迟统计,加了这些改造后,还遇到了lab2在nightly测试中失败的情况。为了验证程序正确性,用了6台云服务器不间断跑untilfail测试,发现lab2仍有问题后,返工继续lab2改造,经过这段时间,已经感觉越来越可控了。

20号早上,感觉已经嗅到了胜利的味道了,但仍然忙了大半天处理最后一个问题,到下午2点多,终于解决,在后续的测试中,再没有出过问题。同时因为前些天回头看之前没看的讲义,感觉应该多看看资料的,其中有个讲义提到有个TA写了一个shell脚本来批量测试,早知道就不用我自己写这堆untilfail了。

中间的12天发现了不少问题。中间花了一天弄Jenkins,想把测试都弄到那上面,后来觉得还是挺费事的,还是用自己的脚本。还是用上了ansible playbook,对于在那6台服务器上跑测试节省了不少时间。

原先没有按照lab说的把get也放到log里,导致次序问题,后来想想确实如果把get也入log就可靠了。

第一次尝试3b是走的follower不主动snapshot,全是由leader发installsnapshot rpc传给它们,后来看了lab说明和论文才改正过来。

交完lab3a和3b之后看了看lab4,后来决定还是先进行pingcap的talent plan,lab4先放后面,其实我倒是很想把lab4先弄下的,毕竟是shard,当年Claus曾提到如果我觉得实习的内容如果没啥挑战的话,可以尝试了解shard的东西,但之后还是比较忙的,一直没有接触。

也不知道我这个进度是不是还是太慢了,毕竟人家只是一门课,我这几乎全部时间投入在上面,才能做到这个程度。和达哥说,感觉大学时候时间都浪费了,如果时间花在这种课程的实验上,要有价值的多,想着有时间再把提到的6.828/6.S081 OS Enginering实验也给做一遍。