From 35dfd94bc2748eaa8dc1e805e03940d07bfd1d9e Mon Sep 17 00:00:00 2001 From: openGaussDev Date: Fri, 4 Mar 2022 15:46:06 +0800 Subject: [PATCH] add mutex MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Offering: openGaussDev More detail: 可选 Match-id-7fbecffd865c0ed00fe0b6e8b74bf944e8ba6b01 --- src/gausskernel/storage/replication/rto_statistic.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gausskernel/storage/replication/rto_statistic.cpp b/src/gausskernel/storage/replication/rto_statistic.cpp index f6b1ec3cc..b594e1de1 100644 --- a/src/gausskernel/storage/replication/rto_statistic.cpp +++ b/src/gausskernel/storage/replication/rto_statistic.cpp @@ -183,6 +183,7 @@ HadrRTOAndRPOData *HadrGetRTOStat(uint32 *num) for (i = 0; i < g_instance.attr.attr_storage.max_wal_senders; i++) { /* use volatile pointer to prevent code rearrangement */ volatile WalSnd *walsnd = &t_thrd.walsender_cxt.WalSndCtl->walsnds[i]; + SpinLockAcquire(&walsnd->mutex); if (walsnd->pid != 0 && ((strstr(g_instance.rto_cxt.rto_standby_data[i].id, "hadr_") != NULL) || (strstr(g_instance.rto_cxt.rto_standby_data[i].id, "hass") != NULL))) { char *standby_names = (char *)(result[readWalSnd].id); @@ -219,6 +220,7 @@ HadrRTOAndRPOData *HadrGetRTOStat(uint32 *num) result[readWalSnd].target_rpo = u_sess->attr.attr_storage.hadr_recovery_point_target; readWalSnd++; } + SpinLockRelease(&walsnd->mutex); } *num = readWalSnd;