From 6ed0160d8c3eecb9afd1259dd2485d1d275d89a4 Mon Sep 17 00:00:00 2001 From: Chunling Wang Date: Thu, 4 Aug 2022 11:17:09 +0800 Subject: [PATCH] issue#I5KOXV Fix zoneid leak when we set enable_ustore to on but never use ustore --- src/gausskernel/storage/access/ustore/undo/knl_uundozone.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gausskernel/storage/access/ustore/undo/knl_uundozone.cpp b/src/gausskernel/storage/access/ustore/undo/knl_uundozone.cpp index 14fed5cb9..5de59f6a2 100644 --- a/src/gausskernel/storage/access/ustore/undo/knl_uundozone.cpp +++ b/src/gausskernel/storage/access/ustore/undo/knl_uundozone.cpp @@ -724,6 +724,10 @@ void UndoZoneGroup::ReleaseZone(int zid, UndoPersistence upersistence) Assert(IS_VALID_ZONE_ID(zid)); WHITEBOX_TEST_STUB(UNDO_RELEASE_ZONE_FAILED, WhiteboxDefaultErrorEmit); if (g_instance.undo_cxt.uZones == NULL || g_instance.undo_cxt.uZoneCount == 0) { + // In situation where we set enable_ustore to on but never use ustore. + // We ALLOCATE_ZONEID() when AllocateZonesBeforXid(), so need to release them. + Assert(g_instance.attr.attr_storage.enable_ustore); + RELEASE_ZONEID(upersistence, zid); return; } UndoZone *uzone = (UndoZone *)g_instance.undo_cxt.uZones[zid];