diff --git a/src/gausskernel/storage/replication/walreceiver.cpp b/src/gausskernel/storage/replication/walreceiver.cpp index 4e814828..91756473 100644 --- a/src/gausskernel/storage/replication/walreceiver.cpp +++ b/src/gausskernel/storage/replication/walreceiver.cpp @@ -3031,6 +3031,8 @@ static void InitArchiveStartPoint() pfree(xlog_array); xlog_array = NULL; } + FreeDir(xldir); + xldir = NULL; } static bool CheckXlogNameValid(char* xlog) diff --git a/src/gausskernel/storage/replication/walsender.cpp b/src/gausskernel/storage/replication/walsender.cpp index f184ed51..be2b7a0e 100644 --- a/src/gausskernel/storage/replication/walsender.cpp +++ b/src/gausskernel/storage/replication/walsender.cpp @@ -3203,7 +3203,9 @@ static int WalSndLoop(WalSndSendDataCallback send_data) XLogRecPtr replayPtr; bool amSync = false; bool got_recptr = false; - int standby_nums = list_length(SyncRepGetSyncStandbys(&amSync)); + List* sync_standbys = SyncRepGetSyncStandbys(&amSync); + int standby_nums = list_length(sync_standbys); + list_free(sync_standbys); got_recptr = SyncRepGetSyncRecPtr(&receivePtr, &writePtr, &flushPtr, &replayPtr, &amSync, false); if (got_recptr) { ArchiveXlogOnStandby(flushPtr);