MIT6.824 Lab2调试过程

2021-12-12 21:50

测试了5次,通过了并发用例。运行并发的用例的时候,会报第6个entry没有被三个节点中的任意一个apply。

看了看日志,发现第6个entry一直没有被apply,没有被apply的原因是leader的commitIndex一直很小,导致

follower的commitIndex也很小。开始以为是发送处理AE RPC的过程有死锁导致程序卡住,但是后来在仔细

看日志,才发现是leader的entry都已经commit到两三个了,才更新自己的commitIndex到1,因为我的实现里

leader在根据figure2的规则更新了commitIndex之后就结束了, 并没有再次增加N,直到不满足figure2的条件。

修改之后,leader的commitIndex更新了,并且每一个entry也都能及时apply。

今天的调试过程总耗时8小时(粗略估计),实际产出一行注释,很痛心。实际上好好搞,根本用不了这么长时间。过程中值得反思的地方有:

1、分析问题要细致,看日志的时候不要盲目,要根据日志去看代码的逻辑。盯着屏幕发呆是不行的。

2、注意力要很集中,否则不会产生心流。避免频繁中断,看手机。

Original: https://www.cnblogs.com/dennis-wong/p/15680897.html
Author: 成蹊0xc000
Title: MIT6.824 Lab2调试过程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582780/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java语言高级(第六部分)函数式接口 Stream流、方法引用 ->(个人学习记录笔记)

    第一章 函数式接口 1.1 概念 函数式接口在Java中是指: 有且仅有一个抽象方法的接口。 函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda…

    Linux 2023年6月8日
    079
  • Linux安装宝塔,OCI8,连接ORACLE数据库

    基础环境 centos7 安装BT宝塔 网址:https://www.bt.cn/download/linux.h…

    Linux 2023年6月6日
    0102
  • jdk 安装(图形界面版)

    在这里为大家提供jdk8的Linux版安装包,下载链接: 提前将jdk安装包放入U盘中,插入U盘,VMware会自动识别,选择将U盘接入虚拟机 打开终端 为避免权限不足,开始之前确…

    Linux 2023年6月8日
    099
  • wget命令8种实用用法

    大家好,我是良许。 wget 是一个可以从网络上下载文件的免费实用程序,它的工作原理是从 Internet 上获取数据,并将其保存到本地文件中或显示在你的终端上。 这实际上也是大家…

    Linux 2023年6月14日
    083
  • Question04-查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩

    * SELECT stu.SID, stu.Sname, IFNULL(CAST(AVG(sc.score) AS DECIMAL(18,2)), 0) 平均成绩 FROM Stu…

    Linux 2023年6月7日
    0117
  • 最新版Linux以root登陆后,无声音、桌面无图标的原因分析

    近两年几乎所有的Linux发行版,以root登陆后无声音、桌面无图标。 声音好处理,这是因为声音服务程序因为安全问题, 不推荐在Root环境下运行; 且本身Linux并不推荐在Ro…

    Linux 2023年6月14日
    0153
  • 小记:音频格式转化ByPython(下)

    上文中我们已经大致明白了pydub库的使用方法,今天的目标是写个爬虫爬取歌曲信息。 关于网络爬虫,Python的标准库里是有相应的包的,可以直接打开:https://docs.py…

    Linux 2023年6月8日
    097
  • 鞍点

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0127
  • LINUX系统虚拟机环境的安装

    安装VM和Centos Step 1 去BIOS里修改设置开启虚拟化设备支持 设置BIOS: 1.开机按F2 、F12 、DEL 、ESC 等进入BIOS ,一般来说可以看屏幕的左…

    Linux 2023年6月7日
    080
  • 【抄】Shell正则表达式

    shell 正则语法基础 copy from: https://man.linuxde.net/docs/shell_regex.html 正则表达式的分类 基本的正则表达式(Ba…

    Linux 2023年5月28日
    094
  • 前端开发:如何正确地跨端

    导读:面对多种多样的跨端诉求,有哪些跨端方案?跨端的本质是什么?作为业务技术开发者,应该怎么做?本文分享阿里巴巴ICBU技术部在跨端开发上的一些思考,介绍了当前主流的跨端方案,以及…

    Linux 2023年6月8日
    071
  • JVM核心之JVM运行和类加载全过程

    为什么研究类加载全过程? 有助于连接JVM 运行过程 更深入了解java 动态性(解热部署,动态加载),提高程序的灵活性 类加载机制 JVM 把class 文件加载到内存,并对数据…

    Linux 2023年6月13日
    076
  • 软件工程 软件测试 第6篇随笔

    5、软件测试 1.软件测试的目的: 测试是一个为了发现错误而执行程序的过程 一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试用例 一个成功的测试是指揭示了迄今为止尚未发现…

    Linux 2023年6月7日
    0109
  • Wireshark 使用教程

    Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安…

    Linux 2023年6月8日
    076
  • MAC安装redis

    一、安装命令使用mac的包管理工具brew一行命令搞定安装。若未安装brew,命令行先输入以下命令安装brew。 /usr/bin/ruby -e “$(curl -f…

    Linux 2023年5月28日
    087
  • 国产化之Arm64 CPU+银河麒麟系统安装.NetCore

    背景 某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,银河麒麟就是一个Linux发行版,数据库使用达梦V8,这个数据库很多概念和Oracle相似,CPU平台的范围:龙…

    Linux 2023年5月27日
    070
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球