[共享存储] dw adapt shared_storage
This commit is contained in:
@ -329,4 +329,5 @@ void ss_failover_dw_init()
|
||||
ckpt_shutdown_pagewriter();
|
||||
g_instance.dms_cxt.SSRecoveryInfo.in_flushcopy = false;
|
||||
ss_failover_dw_init_internal();
|
||||
g_instance.dms_cxt.dw_init = true;
|
||||
}
|
||||
@ -197,6 +197,7 @@ static void knl_g_dms_init(knl_g_dms_context *dms_cxt)
|
||||
dms_cxt->ckptRedo = InvalidXLogRecPtr;
|
||||
dms_cxt->resetSyscache = false;
|
||||
dms_cxt->finishedRecoverOldPrimaryDWFile = false;
|
||||
dms_cxt->dw_init = false;
|
||||
}
|
||||
|
||||
static void knl_g_tests_init(knl_g_tests_context* tests_cxt)
|
||||
|
||||
@ -9678,10 +9678,19 @@ void StartupXLOG(void)
|
||||
* in SS Switchover, skip dw init since we didn't do ShutdownXLOG
|
||||
*/
|
||||
|
||||
if (!SS_PERFORMING_SWITCHOVER && !SSFAILOVER_TRIGGER && !ENABLE_DMS) {
|
||||
if ((ENABLE_REFORM && ((SS_REFORM_REFORMER && !SSFAILOVER_TRIGGER && !SS_PRIMARY_DEMOTED) ||
|
||||
(SS_REFORM_PARTNER && SS_STANDBY_PROMOTING))) ||
|
||||
!ENABLE_DMS || !ENABLE_REFORM) {
|
||||
/* process assist file of chunk recycling */
|
||||
dw_ext_init();
|
||||
dw_init();
|
||||
if (ENABLE_DMS) {
|
||||
g_instance.dms_cxt.dw_init = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (SS_IN_FAILOVER && SS_REFORM_REFORMER) {
|
||||
ss_failover_dw_init();
|
||||
}
|
||||
|
||||
/* Recover meta of undo subsystem. */
|
||||
|
||||
@ -271,8 +271,12 @@ void dw_ext_init();
|
||||
*/
|
||||
inline bool dw_enabled()
|
||||
{
|
||||
if (ENABLE_DMS) {
|
||||
return false;
|
||||
if (ENABLE_DMS && ENABLE_REFORM) {
|
||||
if ((SS_STANDBY_PROMOTING && t_thrd.role != STARTUP && !g_instance.dms_cxt.dw_init) ||
|
||||
(SS_STANDBY_MODE && !SS_STANDBY_PROMOTING) || SS_PRIMARY_DEMOTED ||
|
||||
(SS_STANDBY_FAILOVER && t_thrd.role != STARTUP && !g_instance.dms_cxt.dw_init)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return (ENABLE_INCRE_CKPT && g_instance.attr.attr_storage.enable_double_write);
|
||||
}
|
||||
|
||||
@ -1199,6 +1199,7 @@ typedef struct knl_g_dms_context {
|
||||
XLogRecPtr ckptRedo;
|
||||
bool resetSyscache;
|
||||
bool finishedRecoverOldPrimaryDWFile;
|
||||
bool dw_init;
|
||||
} knl_g_dms_context;
|
||||
|
||||
typedef struct knl_instance_context {
|
||||
|
||||
Reference in New Issue
Block a user