From a44f2e72ac20733f4c844fdf261dab26f728450d Mon Sep 17 00:00:00 2001 From: Jason O'Sullivan Date: Thu, 7 May 2026 11:45:50 +0100 Subject: [PATCH 1/7] HDDS-15199. Fix StartQuotaRepair client ignoring bucket list --- .../protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java | 1 + 1 file changed, 1 insertion(+) diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java index 604298b3c89c..12b505416698 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java @@ -2676,6 +2676,7 @@ public String getQuotaRepairStatus() throws IOException { public void startQuotaRepair(List buckets) throws IOException { OzoneManagerProtocolProtos.StartQuotaRepairRequest startQuotaRepairRequest = OzoneManagerProtocolProtos.StartQuotaRepairRequest.newBuilder() + .addAllBuckets(buckets) .build(); OMRequest omRequest = createOMRequest(Type.StartQuotaRepair) .setStartQuotaRepairRequest(startQuotaRepairRequest).build(); From 1c3b9c8833e67a419c9fbf4836e045845c16abea Mon Sep 17 00:00:00 2001 From: Jason O'Sullivan Date: Thu, 7 May 2026 12:40:46 +0100 Subject: [PATCH 2/7] HDDS-15199. Adding test for OzoneManagerProtocolClientSideTranslatorPB.startQuotaRepair --- ...ManagerProtocolClientSideTranslatorPB.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java diff --git a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java new file mode 100644 index 000000000000..da6ae3746ea2 --- /dev/null +++ b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java @@ -0,0 +1,31 @@ +package org.apache.hadoop.ozone.om.protocolPB; + + +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import java.io.IOException; +import java.util.Collections; + +import static org.mockito.Mockito.verify; + +class TestOzoneManagerProtocolClientSideTranslatorPB { + + @Mock + private OmTransport omTransport; + + private OzoneManagerProtocolClientSideTranslatorPB pb = new OzoneManagerProtocolClientSideTranslatorPB( + omTransport, "test-client-id"); + + @Test + void testStartQuotaRepair() throws IOException { + ArgumentCaptor captor = ArgumentCaptor.forClass(OMRequest.class); + + pb.startQuotaRepair(Collections.emptyList()); + + verify(omTransport.submitRequest(captor.capture())); + + OMRequest + } + +} From a13d89e3ba402a209ed2a1b4ef0da7248938a71a Mon Sep 17 00:00:00 2001 From: Jason O'Sullivan Date: Thu, 7 May 2026 13:49:07 +0100 Subject: [PATCH 3/7] HDDS-15199. Adding test for OzoneManagerProtocolClientSideTranslatorPB.startQuotaRepair --- ...ManagerProtocolClientSideTranslatorPB.java | 65 ++++++++++++++++--- 1 file changed, 55 insertions(+), 10 deletions(-) diff --git a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java index da6ae3746ea2..1ecb89bd454d 100644 --- a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java +++ b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java @@ -1,31 +1,76 @@ package org.apache.hadoop.ozone.om.protocolPB; - +import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest; +import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse; +import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.StartQuotaRepairRequest; +import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.StartQuotaRepairResponse; +import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status; +import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; -import org.mockito.Mock; + import java.io.IOException; import java.util.Collections; +import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; class TestOzoneManagerProtocolClientSideTranslatorPB { - @Mock - private OmTransport omTransport; - - private OzoneManagerProtocolClientSideTranslatorPB pb = new OzoneManagerProtocolClientSideTranslatorPB( + private final OmTransport omTransport = mock(OmTransport.class); + private final OzoneManagerProtocolClientSideTranslatorPB pb = new OzoneManagerProtocolClientSideTranslatorPB( omTransport, "test-client-id"); @Test void testStartQuotaRepair() throws IOException { + StartQuotaRepairResponse response = StartQuotaRepairResponse.newBuilder().build(); + when(omTransport.submitRequest(any(OMRequest.class))).thenReturn( + OMResponse.newBuilder() + .setCmdType(Type.StartQuotaRepair) + .setStatus(Status.OK) + .setStartQuotaRepairResponse(response) + .build()); + ArgumentCaptor captor = ArgumentCaptor.forClass(OMRequest.class); - + pb.startQuotaRepair(Collections.emptyList()); - verify(omTransport.submitRequest(captor.capture())); - - OMRequest + verify(omTransport).submitRequest(captor.capture()); + + OMRequest request = captor.getValue(); + assertThat(request.getCmdType()).isEqualTo(Type.StartQuotaRepair); + + StartQuotaRepairRequest startQuotaRepairRequest = request.getStartQuotaRepairRequest(); + assertThat(startQuotaRepairRequest.getBucketsList()).isEmpty(); + } + + @Test + void testStartQuotaRepairWithSpecifiedBuckets() throws IOException { + StartQuotaRepairResponse response = StartQuotaRepairResponse.newBuilder().build(); + when(omTransport.submitRequest(any(OMRequest.class))).thenReturn( + OMResponse.newBuilder() + .setCmdType(Type.StartQuotaRepair) + .setStatus(Status.OK) + .setStartQuotaRepairResponse(response) + .build()); + + ArgumentCaptor captor = ArgumentCaptor.forClass(OMRequest.class); + + List buckets = Collections.singletonList("Bucket1"); + + pb.startQuotaRepair(buckets); + + verify(omTransport).submitRequest(captor.capture()); + + OMRequest request = captor.getValue(); + assertThat(request.getCmdType()).isEqualTo(Type.StartQuotaRepair); + + StartQuotaRepairRequest startQuotaRepairRequest = request.getStartQuotaRepairRequest(); + assertThat(startQuotaRepairRequest.getBucketsList()).isEqualTo(buckets); } } From 35991145aeb473140ac41f92eb6055cf01970522 Mon Sep 17 00:00:00 2001 From: Jason O'Sullivan Date: Thu, 7 May 2026 13:54:27 +0100 Subject: [PATCH 4/7] HDDS-15199. Adding test for OzoneManagerProtocolClientSideTranslatorPB.startQuotaRepair --- ...ManagerProtocolClientSideTranslatorPB.java | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java index 1ecb89bd454d..be40048e16e2 100644 --- a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java +++ b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java @@ -1,24 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.ozone.om.protocolPB; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.mockito.Mockito.verify; + import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.StartQuotaRepairRequest; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.StartQuotaRepairResponse; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type; +import java.io.IOException; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; - -import java.io.IOException; import java.util.Collections; import java.util.List; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - class TestOzoneManagerProtocolClientSideTranslatorPB { private final OmTransport omTransport = mock(OmTransport.class); From 9667c013b4bb5025ea9a9e211eac5d64e15f1984 Mon Sep 17 00:00:00 2001 From: Jason O'Sullivan Date: Thu, 7 May 2026 13:55:03 +0100 Subject: [PATCH 5/7] HDDS-15199. Adding test for OzoneManagerProtocolClientSideTranslatorPB.startQuotaRepair --- .../TestOzoneManagerProtocolClientSideTranslatorPB.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java index be40048e16e2..def5c740b95d 100644 --- a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java +++ b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java @@ -30,10 +30,10 @@ import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type; import java.io.IOException; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; import java.util.Collections; import java.util.List; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; class TestOzoneManagerProtocolClientSideTranslatorPB { From 3be2c57b2689943dbf81bf82ad1f06d64aff4b08 Mon Sep 17 00:00:00 2001 From: Jason O'Sullivan Date: Thu, 7 May 2026 14:02:14 +0100 Subject: [PATCH 6/7] HDDS-15199. Adding test for OzoneManagerProtocolClientSideTranslatorPB.startQuotaRepair --- .../TestOzoneManagerProtocolClientSideTranslatorPB.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java index def5c740b95d..14cb90a282a0 100644 --- a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java +++ b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java @@ -17,21 +17,20 @@ package org.apache.hadoop.ozone.om.protocolPB; -import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import java.io.IOException; +import java.util.Collections; +import java.util.List; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.StartQuotaRepairRequest; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.StartQuotaRepairResponse; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type; -import java.io.IOException; -import java.util.Collections; -import java.util.List; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; From a451ce1bb39472f02872f14dc2fbbab0382ccf7c Mon Sep 17 00:00:00 2001 From: Jason O'Sullivan Date: Thu, 7 May 2026 14:24:13 +0100 Subject: [PATCH 7/7] HDDS-15199. Adding test for OzoneManagerProtocolClientSideTranslatorPB.startQuotaRepair --- .../TestOzoneManagerProtocolClientSideTranslatorPB.java | 1 + 1 file changed, 1 insertion(+) diff --git a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java index 14cb90a282a0..b82c0cec51b9 100644 --- a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java +++ b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/protocolPB/TestOzoneManagerProtocolClientSideTranslatorPB.java @@ -17,6 +17,7 @@ package org.apache.hadoop.ozone.om.protocolPB; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify;