暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GPDB - FTS机制 - FTS进程启动

原创 闫宗帅 2023-12-17
326

GPDB - FTS机制 - FTS进程启动

作为GreenPlum高可用的核心功能,FTS(Fault Tolerance Server)进程负责故障检测。该进程是master上的一个子进程,可以快速检测到primary或者mirror是否宕机,并及时让primary/mirror进行故障切换。如果fts挂掉了,master还会再重新fork出一个。本文说说FTS进程是怎么启动的。

1、FTS进程的启动


FTS进程的入口函数是FtsProbMain。该进程是如何启动的呢?

1)服务启动后,会先开启一个startup进程,即恢复进程,通过StartupXLog回放WAL日志,可以看到当日志回放完退出StartupXLog函数后,会进程proc_exit函数,退出当前进程。

2)需要注意,proc_exit函数最终会调用exit函数,该函数会向主进程发送SIGCHLD(17)信号。这也是代码中发现不了发送SIGCHLD信号代码的原因。

3)主进程PostmasterMain最开始会注册SIGCHLD信号处理函数reaper

4)reaper函数中通过LookupBackgroundWorkerFunction找到FTS进程入口FtsProbeMain,进入FTS主进程。

如何确定仅master节点才能加载FTS进程呢?


1)PostmasterMain函数调用process_shared_preload_libraries函数前,会调用load_auxiliary_libraries函数注册后台进程。

2)可以看到需要满足启动规则才会注册到BackgroundWorkerList中

3)FTS的启动规则是Gp_role为GP_ROLE_DISPATCH,即master端

这样,结合第一个逻辑图,PostmasterMain->reaper函数从BackgroundWorkerList中取需要启动的进程进行启动,完成FTS的进程启动。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论