You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by ch...@apache.org on 2026/10/22 08:35:04 UTC

(ozone) branch master updated: HDDS-16876. Fix NumTenants metric initialization on OM startup (#11666)

This is an automated email from the ASF dual-hosted git repository.

chihsuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 8cdbaba0bcd HDDS-16876. Fix NumTenants metric initialization on OM startup (#11666)
8cdbaba0bcd is described below

commit 8cdbaba0bcd46f1b79f43bbe4602167d87d97141
Author: Chi-Hsuan Huang <ch...@gmail.com>
AuthorDate: Thu Oct 22 16:34:57 2026 +0800

    HDDS-16876. Fix NumTenants metric initialization on OM startup (#11666)
---
 .../main/java/org/apache/hadoop/ozone/om/OMMetrics.java |  4 ++++
 .../hadoop/ozone/om/OMMultiTenantManagerImpl.java       |  1 +
 .../apache/hadoop/ozone/om/TestOMMetricsSetters.java    |  4 +++-
 .../hadoop/ozone/om/TestOMMultiTenantManagerImpl.java   | 17 +++++++++++++++++
 4 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMetrics.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMetrics.java
index bc921009c01..590675c9d5b 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMetrics.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMetrics.java
@@ -606,6 +606,10 @@ public void incNumListMultipartUploadParts() {
     numListMultipartUploadParts.incr();
   }
 
+  public void setNumTenants(long num) {
+    numTenants.set(num);
+  }
+
   public void incNumTenants() {
     numTenants.incr();
   }
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMultiTenantManagerImpl.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMultiTenantManagerImpl.java
index 157b5bdba89..d9b5bb31032 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMultiTenantManagerImpl.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMultiTenantManagerImpl.java
@@ -893,6 +893,7 @@ private void loadTenantCacheFromDB() {
       throw new RuntimeException(
           "Error while building tenant user cache from DB.", ex);
     }
+    ozoneManager.getMetrics().setNumTenants(tenantCache.size());
   }
 
   @Override
diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOMMetricsSetters.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOMMetricsSetters.java
index 53c3d57b744..bc590ecba4e 100644
--- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOMMetricsSetters.java
+++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOMMetricsSetters.java
@@ -65,6 +65,8 @@ public void testSnapshotAndTenantCounts() {
     metrics.setNumSnapshotDeleted(1);
     metrics.setNumSnapshotDeleted(4);
     metrics.setNumSnapshotDeleted(2);
+    metrics.setNumTenants(5);
+    metrics.setNumTenants(3);
     metrics.incNumTenants();
     metrics.incNumTenants();
     metrics.decNumTenants();
@@ -72,6 +74,6 @@ public void testSnapshotAndTenantCounts() {
     MetricsRecordBuilder rb = getMetrics("OMMetrics");
     assertGauge("NumSnapshotActive", 2L, rb);
     assertGauge("NumSnapshotDeleted", 2L, rb);
-    assertGauge("NumTenants", 1L, rb);
+    assertGauge("NumTenants", 4L, rb);
   }
 }
diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOMMultiTenantManagerImpl.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOMMultiTenantManagerImpl.java
index dad138d97ac..b73775501d8 100644
--- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOMMultiTenantManagerImpl.java
+++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOMMultiTenantManagerImpl.java
@@ -27,6 +27,7 @@
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import java.io.IOException;
@@ -55,6 +56,7 @@ public class TestOMMultiTenantManagerImpl {
   private OMMetadataManager omMetadataManager;
   private OzoneConfiguration conf;
   private OzoneManager ozoneManager;
+  private OMMetrics omMetrics;
 
   @TempDir
   private Path folder;
@@ -72,6 +74,8 @@ public void setUp() throws IOException {
 
     ozoneManager = mock(OzoneManager.class);
     when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager);
+    omMetrics = mock(OMMetrics.class);
+    when(ozoneManager.getMetrics()).thenReturn(omMetrics);
 
     OzoneConfiguration ozoneConfiguration = mock(OzoneConfiguration.class);
     when(ozoneConfiguration.getTimeDuration(
@@ -90,6 +94,8 @@ public void setUp() throws IOException {
    */
   @Test
   public void testReloadCache() throws IOException {
+    verify(omMetrics).setNumTenants(1);
+
     // Create a tenant with multiple users.
     CachedTenantState expectedTenant2State = createTenant("tenant2");
     assignUserToTenant(expectedTenant2State, "access2", "user2", false, false);
@@ -102,6 +108,7 @@ public void testReloadCache() throws IOException {
     // Reload the cache as part of new object creation.
     OMMultiTenantManagerImpl tenantManager2 =
         new OMMultiTenantManagerImpl(ozoneManager, conf);
+    verify(omMetrics).setNumTenants(3);
     // Check that the cache was restored correctly.
     // Setup created a tenant in addition to the ones created for this test.
     assertEquals(3, tenantManager2.getTenantCache().size());
@@ -114,6 +121,16 @@ public void testReloadCache() throws IOException {
 
   }
 
+  @Test
+  public void testReloadCacheWithNoTenants() throws IOException {
+    omMetadataManager.getTenantAccessIdTable().delete("seed-accessId1");
+    omMetadataManager.getTenantStateTable().delete(TENANT_ID);
+
+    OMMultiTenantManagerImpl emptyTenantManager = new OMMultiTenantManagerImpl(ozoneManager, conf);
+    assertThat(emptyTenantManager.getTenantCache()).isEmpty();
+    verify(omMetrics).setNumTenants(0);
+  }
+
   @Test
   public void testListUsersInTenant() throws Exception {
     tenantManager.getCacheOp()


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org