This is an automated email from the ASF dual-hosted git repository.
ivandika 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 d6d9253870 HDDS-13362. Abstract OM response class should not be
annotated with CleanupTableInfo (#8732)
d6d9253870 is described below
commit d6d92538703a93d661523493bdbfd4f0482304d4
Author: Ivan Andika <[email protected]>
AuthorDate: Sat Jul 5 10:29:33 2025 +0800
HDDS-13362. Abstract OM response class should not be annotated with
CleanupTableInfo (#8732)
---
.../om/response/key/AbstractOMKeyDeleteResponse.java | 4 ----
.../multipart/AbstractS3MultipartAbortResponse.java | 9 ---------
.../S3MultipartUploadAbortResponseWithFSO.java | 3 ++-
.../ozone/om/response/TestCleanupTableInfo.java | 20 ++++++++++++++------
4 files changed, 16 insertions(+), 20 deletions(-)
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/AbstractOMKeyDeleteResponse.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/AbstractOMKeyDeleteResponse.java
index 9f9504f595..849027f372 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/AbstractOMKeyDeleteResponse.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/key/AbstractOMKeyDeleteResponse.java
@@ -17,8 +17,6 @@
package org.apache.hadoop.ozone.om.response.key;
-import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.DELETED_TABLE;
-
import jakarta.annotation.Nonnull;
import jakarta.annotation.Nullable;
import java.io.IOException;
@@ -30,14 +28,12 @@
import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
import org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfoGroup;
import org.apache.hadoop.ozone.om.helpers.RepeatedOmKeyInfo;
-import org.apache.hadoop.ozone.om.response.CleanupTableInfo;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
/**
* Base class for responses that need to move keys from an arbitrary table to
* the deleted table.
*/
-@CleanupTableInfo(cleanupTables = {DELETED_TABLE})
public abstract class AbstractOMKeyDeleteResponse extends OmKeyResponse {
public AbstractOMKeyDeleteResponse(
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/AbstractS3MultipartAbortResponse.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/AbstractS3MultipartAbortResponse.java
index c4c37778ed..13cda13705 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/AbstractS3MultipartAbortResponse.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/AbstractS3MultipartAbortResponse.java
@@ -17,12 +17,6 @@
package org.apache.hadoop.ozone.om.response.s3.multipart;
-import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.BUCKET_TABLE;
-import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.DELETED_TABLE;
-import static
org.apache.hadoop.ozone.om.codec.OMDBDefinition.MULTIPART_INFO_TABLE;
-import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.OPEN_FILE_TABLE;
-import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.OPEN_KEY_TABLE;
-
import jakarta.annotation.Nonnull;
import java.io.IOException;
import java.util.Collections;
@@ -36,7 +30,6 @@
import org.apache.hadoop.ozone.om.helpers.OmMultipartAbortInfo;
import org.apache.hadoop.ozone.om.helpers.OmMultipartKeyInfo;
import org.apache.hadoop.ozone.om.helpers.RepeatedOmKeyInfo;
-import org.apache.hadoop.ozone.om.response.CleanupTableInfo;
import org.apache.hadoop.ozone.om.response.key.OmKeyResponse;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.PartKeyInfo;
@@ -45,8 +38,6 @@
* Base class for responses that need to move multipart info part keys to the
* deleted table.
*/
-@CleanupTableInfo(cleanupTables = {OPEN_KEY_TABLE, OPEN_FILE_TABLE,
- DELETED_TABLE, MULTIPART_INFO_TABLE, BUCKET_TABLE})
public abstract class AbstractS3MultipartAbortResponse extends OmKeyResponse {
public AbstractS3MultipartAbortResponse(
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadAbortResponseWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadAbortResponseWithFSO.java
index 7cf78ef802..93d3c45289 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadAbortResponseWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartUploadAbortResponseWithFSO.java
@@ -17,6 +17,7 @@
package org.apache.hadoop.ozone.om.response.s3.multipart;
+import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.BUCKET_TABLE;
import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.DELETED_TABLE;
import static
org.apache.hadoop.ozone.om.codec.OMDBDefinition.MULTIPART_INFO_TABLE;
import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.OPEN_FILE_TABLE;
@@ -32,7 +33,7 @@
* Response for Multipart Abort Request - prefix layout.
*/
@CleanupTableInfo(cleanupTables = {OPEN_FILE_TABLE, DELETED_TABLE,
- MULTIPART_INFO_TABLE})
+ MULTIPART_INFO_TABLE, BUCKET_TABLE})
public class S3MultipartUploadAbortResponseWithFSO
extends S3MultipartUploadAbortResponse {
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
index 0fc3320dcf..dacbfe10f5 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.ozone.om.response;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset;
@@ -29,6 +31,7 @@
import com.google.common.collect.Iterators;
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.Modifier;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Collections;
@@ -59,7 +62,6 @@
import org.apache.hadoop.ozone.om.request.key.OMKeyCreateRequest;
import org.apache.hadoop.ozone.om.response.file.OMFileCreateResponse;
import org.apache.hadoop.ozone.om.response.key.OMKeyCreateResponse;
-import org.apache.hadoop.ozone.om.response.key.OmKeyResponse;
import org.apache.hadoop.ozone.om.response.util.OMEchoRPCWriteResponse;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CreateFileRequest;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CreateKeyRequest;
@@ -130,23 +132,29 @@ public void checkAnnotationAndTableName() {
Set<String> tables = omMetadataManager.listTableNames();
Set<Class<? extends OMClientResponse>> subTypes = responseClasses();
- // OmKeyResponse is an abstract class that does not need CleanupTable.
- subTypes.remove(OmKeyResponse.class);
// OMEchoRPCWriteResponse does not need CleanupTable.
subTypes.remove(OMEchoRPCWriteResponse.class);
subTypes.remove(DummyOMClientResponse.class);
subTypes.forEach(aClass -> {
- assertTrue(aClass.isAnnotationPresent(CleanupTableInfo.class),
- aClass + " does not have annotation of" +
- " CleanupTableInfo");
+ if (Modifier.isAbstract(aClass.getModifiers())) {
+ assertFalse(aClass.isAnnotationPresent(CleanupTableInfo.class),
+ aClass + " is an abstract class and should not contain
CleanupTableInfo annotations");
+ return;
+ } else {
+ assertTrue(aClass.isAnnotationPresent(CleanupTableInfo.class),
+ aClass + " does not have annotation of" +
+ " CleanupTableInfo");
+ }
CleanupTableInfo annotation =
aClass.getAnnotation(CleanupTableInfo.class);
+ assertNotNull(annotation, "CleanupTableInfo is null for class " +
aClass.getSimpleName());
String[] cleanupTables = annotation.cleanupTables();
boolean cleanupAll = annotation.cleanupAll();
if (cleanupTables.length >= 1) {
assertTrue(
Arrays.stream(cleanupTables).allMatch(tables::contains)
);
+
} else {
assertTrue(cleanupAll);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]