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