From c1a67c9acad41bf29768a99de55c8c9ec6dee746 Mon Sep 17 00:00:00 2001 From: Halil Ozan Akgul Date: Fri, 10 Mar 2023 11:00:09 +0300 Subject: [PATCH] Fix lock --- src/backend/distributed/utils/attribute.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/backend/distributed/utils/attribute.c b/src/backend/distributed/utils/attribute.c index 0563ea6ed..72d4d5058 100644 --- a/src/backend/distributed/utils/attribute.c +++ b/src/backend/distributed/utils/attribute.c @@ -42,6 +42,9 @@ clock_t attributeToTenantStart = { 0 }; const char *SharedMemoryNameForMultiTenantMonitor = "Shared memory for multi tenant monitor"; +char *tenantTrancheName = "Tenant Tranche"; +char *monitorTrancheName = "Multi Tenant Monitor Tranche"; + static shmem_startup_hook_type prev_shmem_startup_hook = NULL; static void UpdatePeriodsIfNecessary(MultiTenantMonitor *monitor, @@ -319,9 +322,11 @@ AttributeMetricsIfApplicable() monitor->tenants[tenantIndex] = monitor->tenants[tenantIndex - 1]; monitor->tenants[tenantIndex - 1] = tempTenant; - LWLockRelease(&monitor->tenants[tenantIndex - 1].lock); + LWLockRelease(&monitor->tenants[tenantIndex].lock); tenantIndex--; + + tenantStats = &monitor->tenants[tenantIndex]; } if (attributeCommandType == CMD_SELECT) @@ -337,8 +342,8 @@ AttributeMetricsIfApplicable() tenantStats->totalInsertTime += cpu_time_used; } - LWLockRelease(&tenantStats->lock); LWLockRelease(&monitor->lock); + LWLockRelease(&tenantStats->lock); /* * We keep up to CitusStatsTenantsLimit * 3 tenants instead of CitusStatsTenantsLimit, @@ -474,11 +479,10 @@ CreateSharedMemoryForMultiTenantMonitor() return monitor; } - char *trancheName = "Multi Tenant Monitor Tranche"; - monitor->namedLockTranche.trancheId = LWLockNewTrancheId(); + monitor->namedLockTranche.trancheName = monitorTrancheName; - LWLockRegisterTranche(monitor->namedLockTranche.trancheId, trancheName); + LWLockRegisterTranche(monitor->namedLockTranche.trancheId, monitor->namedLockTranche.trancheName); LWLockInitialize(&monitor->lock, monitor->namedLockTranche.trancheId); return monitor; @@ -547,12 +551,11 @@ CreateTenantStats(MultiTenantMonitor *monitor) strcpy(monitor->tenants[tenantIndex].tenantAttribute, attributeToTenant); monitor->tenants[tenantIndex].colocationGroupId = colocationGroupId; - char *trancheName = "Tenant Tranche"; - monitor->tenants[tenantIndex].namedLockTranche.trancheId = LWLockNewTrancheId(); + monitor->tenants[tenantIndex].namedLockTranche.trancheName = tenantTrancheName; LWLockRegisterTranche(monitor->tenants[tenantIndex].namedLockTranche.trancheId, - trancheName); + monitor->tenants[tenantIndex].namedLockTranche.trancheName); LWLockInitialize(&monitor->tenants[tenantIndex].lock, monitor->tenants[tenantIndex].namedLockTranche.trancheId);