当前位置: 首页> 游戏> 攻略 > 网站建设合同书范本_凡科建站官网 网络服务_有什么好的网站吗_雅虎日本新闻

网站建设合同书范本_凡科建站官网 网络服务_有什么好的网站吗_雅虎日本新闻

时间:2025/7/13 2:22:02来源:https://blog.csdn.net/zhangshenglu1/article/details/144511988 浏览次数:0次
网站建设合同书范本_凡科建站官网 网络服务_有什么好的网站吗_雅虎日本新闻

applyEntries方法的主要作用是接收待应用的 Raft 日志条目,并按顺序将其应用到系统中;确保条目的索引连续,避免丢失或重复应用条目。

一、函数完整代码

func (s *EtcdServer) applyEntries(ep *etcdProgress, apply *apply) {if len(apply.entries) == 0 {return}firsti := apply.entries[0].Indexif firsti > ep.appliedi+1 {lg := s.Logger()lg.Panic("unexpected committed entry index",zap.Uint64("current-applied-index", ep.appliedi),zap.Uint64("first-committed-entry-index", firsti),)}var ents []raftpb.Entryif ep.appliedi+1-firsti < uint64(len(apply.entries)) {ents = apply.entries[ep.appliedi+1-firsti:]}if len(ents) == 0 {return}var shouldstop boolif ep.appliedt, ep.appliedi, shouldstop = s.apply(ents, &ep.confState); shouldstop {go s.stopWithDelay(10*100*time.Millisecond, fmt.Errorf("the member has been permanently removed from the cluster"))}
}

二、方法完整解析

1. 检查是否有待应用的条目

if len(apply.entries) == 0 {return
}
  • 功能:检查是否有待应用的条目。
  • 作用:如果 apply.entries 为空,说明没有新条目需要应用,函数直接返回,不做任何处理。

2. 验证条目的索引是否连续

firsti := apply.entries[0].Index
if firsti > ep.appliedi+1 {lg := s.Logger()lg.Panic("unexpected committed entry index",zap.Uint64("current-applied-index", ep.appliedi),zap.Uint64("first-committed-entry-index", firsti),)
}
  • 功能:验证待应用条目的索引是否连续。
  • 作用:如果待应用的第一个条目索引大于当前已应用索引 + 1,表示条目丢失或索引跳跃,触发 panic,并记录错误日志。

3. 选择待应用的条目

var ents []raftpb.Entry
if ep.appliedi+1-firsti < uint64(len(apply.entries)) {ents = apply.entries[ep.appliedi+1-firsti:]
}
  • 功能:选择从当前已应用索引之后需要应用的条目。
  • 作用:确保条目按照顺序应用,避免跳过任何条目。ents 保存了从当前应用位置开始的所有待应用条目。

4. 检查是否有待应用的条目

if len(ents) == 0 {return
}
  • 功能:检查是否有待应用的条目。
  • 作用:如果没有待应用的条目(即所有条目都已经应用),直接返回,不继续执行后续操作。

5. 应用条目并判断是否需要停止该成员

var shouldstop bool
if ep.appliedt, ep.appliedi, shouldstop = s.apply(ents, &ep.confState); shouldstop {go s.stopWithDelay(10*100*time.Millisecond, fmt.Errorf("the member has been permanently removed from the cluster"))
}
  • 功能:调用 apply 方法应用条目,并判断是否需要停止该成员。
  • 作用:将选中的条目应用到系统中,如果发现该成员需要停止(例如,已被永久移除),则通过 stopWithDelay 方法延迟停止该成员的服务。

三、方法总结:

  • 该方法的主要作用是接收待应用的 Raft 日志条目,并按顺序将其应用到系统中。
  • 它会确保条目的索引连续,避免丢失或重复应用条目。
  • 如果发现该成员应该被移除(如它被永久移除或存在某些异常情况),函数会触发停止操作。
    下一步的阅读的主要方法为
    func (s *EtcdServer) apply方法
关键字:网站建设合同书范本_凡科建站官网 网络服务_有什么好的网站吗_雅虎日本新闻

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: