初步学习pg_control文件之四

简介:

接前文,初步学习pg_control文件之三  继续分析

何时出现 DB_SHUTDOWNING状态:

在正常的shutdown的时候,需要进行checkpoint,所以就在此处,设置pg_control文件的state状态为DB_SHUTDOWNING。

复制代码
/*
 * Perform a checkpoint --- either during shutdown, or on-the-fly
 *
 * flags is a bitwise OR of the following:
 *    CHECKPOINT_IS_SHUTDOWN: checkpoint is for database shutdown.
 *    CHECKPOINT_END_OF_RECOVERY: checkpoint is for end of WAL recovery.
 *    CHECKPOINT_IMMEDIATE: finish the checkpoint ASAP,
 *        ignoring checkpoint_completion_target parameter.
 *    CHECKPOINT_FORCE: force a checkpoint even if no XLOG activity has occured
 *        since the last one (implied by CHECKPOINT_IS_SHUTDOWN or
 *        CHECKPOINT_END_OF_RECOVERY).
 *
 * Note: flags contains other bits, of interest here only for logging purposes.
 * In particular note that this routine is synchronous and does not pay
 * attention to CHECKPOINT_WAIT.
 */
void
CreateCheckPoint(int flags)
{
    ...
    if (shutdown)
    {
        LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);
        ControlFile->state = DB_SHUTDOWNING;
        ControlFile->time = (pg_time_t) time(NULL);
        UpdateControlFile();
        LWLockRelease(ControlFileLock);
    }
    ...
}
复制代码

更进一步地说,是这样的:先是Shutdowning, 后来就变化为Shutdowned

复制代码
/*                            
 * Perform a checkpoint --- either during shutdown, or on-the-fly                            
 *                            
 * flags is a bitwise OR of the following:                            
 *    CHECKPOINT_IS_SHUTDOWN: checkpoint is for database shutdown.                        
 *    CHECKPOINT_END_OF_RECOVERY: checkpoint is for end of WAL recovery.                        
 *    CHECKPOINT_IMMEDIATE: finish the checkpoint ASAP,                        
 *        ignoring checkpoint_completion_target parameter.                    
 *    CHECKPOINT_FORCE: force a checkpoint even if no XLOG activity has occured                        
 *        since the last one (implied by CHECKPOINT_IS_SHUTDOWN or                    
 *        CHECKPOINT_END_OF_RECOVERY).                    
 *                            
 * Note: flags contains other bits, of interest here only for logging purposes.                            
 * In particular note that this routine is synchronous and does not pay                            
 * attention to CHECKPOINT_WAIT.                            
 */                            
void                            
CreateCheckPoint(int flags)                            
{                            
    …                        
                            
    if (shutdown)                        
    {                        
        LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);                    
        ControlFile->state = DB_SHUTDOWNING;                    
        ControlFile->time = (pg_time_t) time(NULL);                    
        UpdateControlFile();                    
        LWLockRelease(ControlFileLock);                    
    }                        
    …                        
                            
    /*                        
     * Update the control file.                        
     */                        
    LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);                        
    if (shutdown)                        
        ControlFile->state = DB_SHUTDOWNED;                    
                            
    ControlFile->prevCheckPoint = ControlFile->checkPoint;                        
    …                        
}                            
复制代码
目录
相关文章
|
安全 Linux Shell
structure needs cleaning结构需要清理解决方案
structure needs cleaning结构需要清理解决方案
4718 0
|
机器学习/深度学习 测试技术 信息无障碍
VLM集体失明?视力测试惨败,GPT-4o、Claude 3.5全都不及格
【8月更文挑战第2天】新研究表明,顶尖视觉语言模型(VLMs)如GPT-4o和Claude 3.5,在看似简单的视觉任务上表现堪忧,诸如判断圆圈是否重叠或线条是否交叉等。此发现揭示了即便是在图像理解方面表现出色的VLMs也存在基本视觉认知的局限性,提示模型融合视觉信息的方式有待改进。论文详细探讨了可能的原因及未来提升方向。[@arxiv:2407.06581]
224 6
|
Linux Python
Linux离线安装Python第三方库Requests
本文介绍了在无法连接外网的Linux服务器上离线安装Python第三方库Requests的过程,包括下载依赖包、解决依赖问题并成功安装的步骤。
1217 0
|
安全 Python
Python文件操作全面指南
【8月更文挑战第4天】Python是一种强大的编程语言,支持丰富的文件操作功能。本文全面介绍了Python文件操作,包括读取、写入、追加及关闭文件等基本操作,并演示了如何处理异常以增强程序的健壮性。此外,还深入探讨了使用`os`和`shutil`模块进行高级文件与目录管理的方法,以及如何运用上下文管理器自动管理文件资源,为读者提供了实用的代码示例和最佳实践。
|
机器学习/深度学习 人工智能 自动驾驶
人工智能的伦理困境:机器的自主性与人类的责任
【8月更文挑战第8天】在人工智能技术飞速发展的今天,一个日益凸显的问题是关于AI的伦理困境。随着机器学习和深度学习技术的进步,AI系统展现出越来越高的自主性,这引发了关于人类责任和控制的哲学讨论。本文将探讨AI自主性的提升如何影响人类的伦理责任,以及我们应如何平衡技术进步与道德考量。
|
网络安全 开发工具 数据安全/隐私保护
如何把ipa文件(iOS安装包)安装到iPhone手机上? 附方法汇总
如何把ipa文件(iOS安装包)安装到iPhone手机上? 附方法汇总
|
API C++ 微服务
微服务新体验之Aspire初体验
该文指导安装Aspire项目。首先,需检查VS版本,若低于17.9.7则须更新。通过“帮助”菜单选择“检查更新”并安装。接着创建Aspire项目,然后在AspireApp1.AppHost的launchSettings.json中添加"ASPIRE_ALLOW_UNSECURED_TRANSPORT": "true"。运行AspireApp1.AppHost项目,最后访问AspireApp1.Web以查看结果。文中代码展示了如何在AspireApp1.Web中注入并调用apiservice的API。作者为吴晓阳。
301 3
微服务新体验之Aspire初体验
|
机器学习/深度学习 人工智能 自然语言处理
人工智能在网络安全中的威胁情报分析与响应的应用
人工智能在网络安全中的威胁情报分析与响应的应用
|
关系型数据库 数据库 PostgreSQL
PG从小白到专家 - Part 11:PostgreSQL控制文件作用与管理
PG从小白到专家 - Part 11:PostgreSQL控制文件作用与管理
445 1
|
文字识别 API 网络安全
一文带你看透手机号码归属地
手机号码归属地对企业与个人在生产与生活中起到了重要的作用,那么查询手机号码归属地的接口就是必不可少的了。APISpace上的手机号码归属地API就可以很好的满足手机号码归属地查询的需求。
2208 1