modified: src/gausskernel/ddes/adapter/ss_dms_bufmgr.cpp
modified: src/gausskernel/ddes/adapter/ss_dms_callback.cpp modified: src/gausskernel/process/threadpool/knl_instance.cpp modified: src/gausskernel/storage/buffer/bufmgr.cpp modified: src/gausskernel/storage/smgr/segment/segbuffer.cpp modified: src/include/ddes/dms/ss_dms_recovery.h modified: src/include/knl/knl_thread.h modified: gausskernel/storage/buffer/bufmgr.cpp modified: gausskernel/storage/smgr/segment/segbuffer.cpp modified: gausskernel/ddes/adapter/ss_dms_bufmgr.cpp modified: gausskernel/storage/smgr/segment/segbuffer.cpp modified: segbuffer.cpp modified: gausskernel/ddes/adapter/ss_dms_bufmgr.cpp modified: gausskernel/storage/smgr/segment/segbuffer.cpp modified: ddes/adapter/ss_dms_bufmgr.cpp modified: storage/smgr/segment/segbuffer.cpp modified: gausskernel/ddes/adapter/ss_dms_bufmgr.cpp modified: gausskernel/storage/smgr/segment/segbuffer.cpp modified: src/gausskernel/ddes/adapter/ss_dms_bufmgr.cpp modified: src/gausskernel/storage/smgr/segment/segbuffer.cpp modified: gausskernel/ddes/adapter/ss_dms_bufmgr.cpp modified: gausskernel/storage/buffer/bufmgr.cpp modified: gausskernel/storage/smgr/segment/segbuffer.cpp modified: gausskernel/storage/buffer/bufmgr.cpp modified: gausskernel/ddes/adapter/ss_dms_bufmgr.cpp modified: gausskernel/ddes/adapter/ss_dms_callback.cpp modified: gausskernel/process/threadpool/knl_instance.cpp modified: gausskernel/storage/buffer/bufmgr.cpp modified: include/ddes/dms/ss_dms_recovery.h modified: src/gausskernel/ddes/adapter/ss_dms_callback.cpp modified: src/gausskernel/process/threadpool/knl_instance.cpp modified: src/gausskernel/storage/buffer/bufmgr.cpp modified: src/include/ddes/dms/ss_dms_recovery.h modified: src/gausskernel/ddes/adapter/ss_dms_bufmgr.cpp modified: src/gausskernel/storage/buffer/bufmgr.cpp modified: src/gausskernel/storage/smgr/segment/segbuffer.cpp modified: src/gausskernel/ddes/adapter/ss_dms_bufmgr.cpp modified: src/gausskernel/ddes/adapter/ss_dms_callback.cpp modified: src/gausskernel/process/threadpool/knl_instance.cpp modified: src/gausskernel/storage/buffer/bufmgr.cpp modified: src/gausskernel/storage/smgr/segment/segbuffer.cpp modified: src/include/ddes/dms/ss_dms_recovery.h
This commit is contained in:
@ -30,6 +30,7 @@
|
||||
#include "utils/resowner.h"
|
||||
#include "ddes/dms/ss_dms_bufmgr.h"
|
||||
#include "ddes/dms/ss_reform_common.h"
|
||||
#include "ddes/dms/ss_dms_recovery.h"
|
||||
#include "securec_check.h"
|
||||
#include "miscadmin.h"
|
||||
#include "access/double_write.h"
|
||||
@ -477,12 +478,10 @@ Buffer DmsReadSegPage(Buffer buffer, LWLockMode mode, ReadBufferMode read_mode,
|
||||
if (buf_ctrl->state & BUF_IS_RELPERSISTENT_TEMP) {
|
||||
return buffer;
|
||||
}
|
||||
|
||||
if (!DmsCheckBufAccessible()) {
|
||||
*with_io = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!DmsStartBufferIO(buf_desc, mode)) {
|
||||
if (!DmsCheckBufAccessible()) {
|
||||
*with_io = false;
|
||||
|
||||
@ -88,6 +88,7 @@
|
||||
#include "ddes/dms/ss_common_attr.h"
|
||||
#include "ddes/dms/ss_reform_common.h"
|
||||
#include "ddes/dms/ss_transaction.h"
|
||||
#include "knl/knl_thread.h"
|
||||
|
||||
const int ONE_MILLISECOND = 1;
|
||||
const int TEN_MICROSECOND = 10;
|
||||
@ -2589,6 +2590,10 @@ Buffer ReadBuffer_common(SMgrRelation smgr, char relpersistence, ForkNumber fork
|
||||
*/
|
||||
} else if (RecoveryInProgress()) {
|
||||
BlockNumber totalBlkNum = smgrnblocks_cached(smgr, forkNum);
|
||||
/* when in failover, should return to worker thread exit */
|
||||
if (SS_IN_FAILOVER && SS_AM_BACKENDS_WORKERS) {
|
||||
return InvalidBuffer;
|
||||
}
|
||||
|
||||
/* Update cached blocks */
|
||||
if (totalBlkNum == InvalidBlockNumber || blockNum >= totalBlkNum) {
|
||||
@ -2785,7 +2790,7 @@ found_branch:
|
||||
return InvalidBuffer;
|
||||
}
|
||||
/* when in failover, should return to worker thread exit */
|
||||
if ((SS_IN_FAILOVER) && ((t_thrd.role == WORKER) || (t_thrd.role == THREADPOOL_WORKER))) {
|
||||
if (SS_IN_FAILOVER && SS_AM_BACKENDS_WORKERS) {
|
||||
SSUnPinBuffer(bufHdr);
|
||||
return InvalidBuffer;
|
||||
}
|
||||
@ -3333,6 +3338,11 @@ retry_new_buffer:
|
||||
return buf;
|
||||
}
|
||||
|
||||
/* when in failover, should return to worker thread exit */
|
||||
if (SS_IN_FAILOVER && SS_AM_BACKENDS_WORKERS) {
|
||||
ClearReadHint(buf->buf_id, true);
|
||||
break;
|
||||
}
|
||||
/*
|
||||
* Somebody could have pinned or re-dirtied the buffer while we were
|
||||
* doing the I/O and making the new hashtable entry. If so, we can't
|
||||
@ -3353,11 +3363,6 @@ retry_new_buffer:
|
||||
ClearReadHint(buf->buf_id, true);
|
||||
break;
|
||||
}
|
||||
/* when in failover, woker thread should return InvalidBuffer and exit */
|
||||
if (SS_IN_FAILOVER && ((t_thrd.role == WORKER) || (t_thrd.role == THREADPOOL_WORKER))) {
|
||||
ClearReadHint(buf->buf_id, true);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
@ -6355,7 +6360,7 @@ retry:
|
||||
}
|
||||
bool with_io_in_progress = true;
|
||||
/* when in failover, should return to worker thread exit */
|
||||
if ((SS_IN_FAILOVER) && ((t_thrd.role == WORKER) || (t_thrd.role == THREADPOOL_WORKER))) {
|
||||
if (SS_IN_FAILOVER && SS_AM_BACKENDS_WORKERS) {
|
||||
return;
|
||||
}
|
||||
if (IsSegmentBufferID(buf->buf_id)) {
|
||||
|
||||
@ -34,6 +34,8 @@
|
||||
#include "pgstat.h"
|
||||
#include "ddes/dms/ss_dms_bufmgr.h"
|
||||
#include "replication/ss_disaster_cluster.h"
|
||||
#include "knl/knl_thread.h"
|
||||
|
||||
/*
|
||||
* Segment buffer, used for segment meta data, e.g., segment head, space map head. We separate segment
|
||||
* meta data buffer and normal data buffer (in bufmgr.cpp) to avoid potential dead locks.
|
||||
@ -619,7 +621,7 @@ Buffer ReadBufferFast(SegSpace *spc, RelFileNode rnode, ForkNumber forkNum, Bloc
|
||||
return InvalidBuffer;
|
||||
}
|
||||
/* when in failover, should return to worker thread exit */
|
||||
if ((SS_IN_FAILOVER) && ((t_thrd.role == WORKER) || (t_thrd.role == THREADPOOL_WORKER))) {
|
||||
if (SS_IN_FAILOVER && SS_AM_BACKENDS_WORKERS) {
|
||||
SSUnPinBuffer(bufHdr);
|
||||
return InvalidBuffer;
|
||||
}
|
||||
|
||||
@ -66,7 +66,6 @@
|
||||
SS_NORMAL_PRIMARY && g_instance.dms_cxt.SSRecoveryInfo.enableRealtimeBuildLogCtrl > 0)
|
||||
#define SS_STANDBY_ENABLE_TARGET_RTO (SS_NORMAL_STANDBY && \
|
||||
SS_ONDEMAND_REALTIME_BUILD_NORMAL && g_instance.dms_cxt.SSRecoveryInfo.enableRealtimeBuildLogCtrl > 0)
|
||||
|
||||
#define REFORM_CTRL_VERSION 1
|
||||
typedef struct st_reformer_ctrl {
|
||||
uint32 version;
|
||||
|
||||
@ -82,6 +82,9 @@
|
||||
#define MAX_PATH_LEN 1024
|
||||
extern const int g_reserve_param_num;
|
||||
#define PARTKEY_VALUE_MAXNUM 64
|
||||
#define SS_AM_BACKENDS_WORKERS (t_thrd.role == WORKER || \
|
||||
t_thrd.role == THREADPOOL_WORKER || \
|
||||
t_thrd.role == TRACK_STMT_CLEANER)
|
||||
|
||||
typedef struct ResourceOwnerData* ResourceOwner;
|
||||
typedef struct logicalLog logicalLog;
|
||||
|
||||
Reference in New Issue
Block a user