@ -1136,6 +1136,7 @@ static void HashXlogMovePageContentsBlock(XLogBlockHead *blockhead, XLogBlockDat
|
||||
|
||||
if (block_id == HASH_MOVE_BUK_BLOCK_NUM) {
|
||||
PageSetLSN(bufferinfo->pageinfo.page, bufferinfo->lsn);
|
||||
MakeRedoBufferDirty(bufferinfo);
|
||||
}
|
||||
|
||||
if (block_id == HASH_MOVE_ADD_BLOCK_NUM) {
|
||||
@ -1169,6 +1170,7 @@ static void HashXlogSqueezePageBlock(XLogBlockHead *blockhead, XLogBlockDataPars
|
||||
|
||||
if (block_id == HASH_SQUEEZE_BUK_BLOCK_NUM) {
|
||||
PageSetLSN(bufferinfo->pageinfo.page, bufferinfo->lsn);
|
||||
MakeRedoBufferDirty(bufferinfo);
|
||||
}
|
||||
|
||||
if (block_id == HASH_SQUEEZE_ADD_BLOCK_NUM) {
|
||||
|
||||
@ -1737,22 +1737,22 @@ void ExtremeRtoFlushBuffer(RedoBufferInfo *bufferinfo, bool updateFsm)
|
||||
/* backends may mark buffer dirty already */
|
||||
if (!(bufDesc->state & BM_DIRTY)) {
|
||||
MarkBufferDirty(bufferinfo->buf);
|
||||
}
|
||||
if (!bufferinfo->dirtyflag && bufferinfo->blockinfo.forknum == MAIN_FORKNUM) {
|
||||
int mode = WARNING;
|
||||
if (!bufferinfo->dirtyflag && bufferinfo->blockinfo.forknum == MAIN_FORKNUM) {
|
||||
int mode = WARNING;
|
||||
#ifdef USE_ASSERT_CHECKING
|
||||
mode = PANIC;
|
||||
mode = PANIC;
|
||||
#endif
|
||||
const uint32 shiftSz = 32;
|
||||
ereport(mode, (errmsg("extreme_rto not mark dirty:lsn %X/%X, lsn_disk %X/%X, "
|
||||
"lsn_page %X/%X, page %u/%u/%u %u",
|
||||
(uint32)(bufferinfo->lsn >> shiftSz), (uint32)(bufferinfo->lsn),
|
||||
(uint32)(bufDesc->extra->lsn_on_disk >> shiftSz),
|
||||
(uint32)(bufDesc->extra->lsn_on_disk),
|
||||
(uint32)(PageGetLSN(bufferinfo->pageinfo.page) >> shiftSz),
|
||||
(uint32)(PageGetLSN(bufferinfo->pageinfo.page)),
|
||||
bufferinfo->blockinfo.rnode.spcNode, bufferinfo->blockinfo.rnode.dbNode,
|
||||
bufferinfo->blockinfo.rnode.relNode, bufferinfo->blockinfo.blkno)));
|
||||
const uint32 shiftSz = 32;
|
||||
ereport(mode, (errmsg("extreme_rto not mark dirty:lsn %X/%X, lsn_disk %X/%X, "
|
||||
"lsn_page %X/%X, page %u/%u/%u %u",
|
||||
(uint32)(bufferinfo->lsn >> shiftSz), (uint32)(bufferinfo->lsn),
|
||||
(uint32)(bufDesc->extra->lsn_on_disk >> shiftSz),
|
||||
(uint32)(bufDesc->extra->lsn_on_disk),
|
||||
(uint32)(PageGetLSN(bufferinfo->pageinfo.page) >> shiftSz),
|
||||
(uint32)(PageGetLSN(bufferinfo->pageinfo.page)),
|
||||
bufferinfo->blockinfo.rnode.spcNode, bufferinfo->blockinfo.rnode.dbNode,
|
||||
bufferinfo->blockinfo.rnode.relNode, bufferinfo->blockinfo.blkno)));
|
||||
}
|
||||
}
|
||||
#ifdef USE_ASSERT_CHECKING
|
||||
bufDesc->lsn_dirty = PageGetLSN(bufferinfo->pageinfo.page);
|
||||
|
||||
@ -26,20 +26,20 @@ function hash_index_test()
|
||||
|
||||
gsql -d $db_name -p $dn1_primary_port -c "create table hash_table_2(id int, name varchar, sex varchar default 'male');"
|
||||
gsql -d $db_name -p $dn1_primary_port -c "insert into hash_table_2 select random()*100, 'XXX', 'XXX' from generate_series(1,50000);"
|
||||
gsql -d $db_name -p $dn1_primary_port -c "create or replace procedure hash_proc_9(sid in integer)
|
||||
gsql -d $db_name -p $dn1_primary_port -c "create or replace procedure hash_proc_2(sid in integer)
|
||||
is
|
||||
begin
|
||||
set enable_indexscan = on;
|
||||
set enable_bitmapscan = off;
|
||||
delete from hash_table_9 where id = sid;
|
||||
perform * from hash_table_9 where id = sid;
|
||||
insert into hash_table_9 select sid, random() * 10, 'xxx' from generate_series(1,5000);
|
||||
delete from hash_table_2 where id = sid;
|
||||
perform * from hash_table_2 where id = sid;
|
||||
insert into hash_table_2 select sid, random() * 10, 'xxx' from generate_series(1,5000);
|
||||
end;
|
||||
/"
|
||||
gsql -d $db_name -p $dn1_primary_port -c "call hash_proc_9(1);"
|
||||
gsql -d $db_name -p $dn1_primary_port -c "call hash_proc_9(1);"
|
||||
gsql -d $db_name -p $dn1_primary_port -c "call hash_proc_9(1);"
|
||||
gsql -d $db_name -p $dn1_primary_port -c "call hash_proc_9(1);"
|
||||
gsql -d $db_name -p $dn1_primary_port -c "call hash_proc_2(1);"
|
||||
gsql -d $db_name -p $dn1_primary_port -c "call hash_proc_2(1);"
|
||||
gsql -d $db_name -p $dn1_primary_port -c "call hash_proc_2(1);"
|
||||
gsql -d $db_name -p $dn1_primary_port -c "call hash_proc_2(1);"
|
||||
|
||||
sleep 3;
|
||||
|
||||
@ -56,8 +56,8 @@ function test_1()
|
||||
kill_cluster
|
||||
echo "begin to set parallel recovery param"
|
||||
gs_guc set -Z datanode -D $primary_data_dir -c "recovery_max_workers = 2"
|
||||
gs_guc set -Z datanode -D $primary_data_dir -c "recovery_parse_workers = 0"
|
||||
gs_guc set -Z datanode -D $primary_data_dir -c "recovery_redo_workers = 0"
|
||||
gs_guc set -Z datanode -D $primary_data_dir -c "recovery_parse_workers = 1"
|
||||
gs_guc set -Z datanode -D $primary_data_dir -c "recovery_redo_workers = 1"
|
||||
gs_guc set -Z datanode -D $primary_data_dir -c "hot_standby = on"
|
||||
start_cluster
|
||||
echo "start cluter success!"
|
||||
|
||||
Reference in New Issue
Block a user