This is an automated email from the ASF dual-hosted git repository.
jmclean pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new eaba9a23c5 [#9122] [Improvement]: Prevent potential null pointer error
in MetadataObjectStatisticsOperations.java (#9134)
eaba9a23c5 is described below
commit eaba9a23c507e91e116b826332c7df9cf7eddf64
Author: pikady <[email protected]>
AuthorDate: Mon Nov 17 07:34:01 2025 +0800
[#9122] [Improvement]: Prevent potential null pointer error in
MetadataObjectStatisticsOperations.java (#9134)
### What changes were proposed in this pull request?
- Add argument validation in
MetadataObjectStatisticsOperations#dropStatistics to throw
IllegalArgumentException when the list is null or empty.
- Extend unit tests to assert null/empty list behavior.
### Why are the changes needed?
- Prevents potential NullPointerException and provides clearer error
feedback to callers.
Fix: #9122
### Does this PR introduce _any_ user-facing change?
- dropStatistics(null | empty) now throws IllegalArgumentException (null
input previously could cause NPE).
### How was this patch tested?
- Unit tests added for null and empty list inputs.
Signed-off-by: pikady <[email protected]>
---
.../gravitino/client/MetadataObjectStatisticsOperations.java | 3 +++
.../java/org/apache/gravitino/client/TestSupportsStatistics.java | 9 +++++++++
2 files changed, 12 insertions(+)
diff --git
a/clients/client-java/src/main/java/org/apache/gravitino/client/MetadataObjectStatisticsOperations.java
b/clients/client-java/src/main/java/org/apache/gravitino/client/MetadataObjectStatisticsOperations.java
index 415b7e40ab..e4ec0dbe3f 100644
---
a/clients/client-java/src/main/java/org/apache/gravitino/client/MetadataObjectStatisticsOperations.java
+++
b/clients/client-java/src/main/java/org/apache/gravitino/client/MetadataObjectStatisticsOperations.java
@@ -93,6 +93,9 @@ class MetadataObjectStatisticsOperations implements
SupportsStatistics {
@Override
public boolean dropStatistics(List<String> statistics) throws
UnmodifiableStatisticException {
+ Preconditions.checkArgument(
+ statistics != null && !statistics.isEmpty(), "Statistics list must not
be null or empty");
+
StatisticsDropRequest request = new
StatisticsDropRequest(statistics.toArray(new String[0]));
request.validate();
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/TestSupportsStatistics.java
b/clients/client-java/src/test/java/org/apache/gravitino/client/TestSupportsStatistics.java
index 65420e8198..ab1c1c1bee 100644
---
a/clients/client-java/src/test/java/org/apache/gravitino/client/TestSupportsStatistics.java
+++
b/clients/client-java/src/test/java/org/apache/gravitino/client/TestSupportsStatistics.java
@@ -251,6 +251,15 @@ public class TestSupportsStatistics extends TestBase {
Assertions.assertThrows(
UnmodifiableStatisticException.class,
() -> supportsStatistics.dropStatistics(statisticsToDrop));
+
+ // Test null statistics list exception
+ Assertions.assertThrows(
+ IllegalArgumentException.class, () ->
supportsStatistics.dropStatistics(null));
+
+ // Test empty statistics list exception
+ Assertions.assertThrows(
+ IllegalArgumentException.class,
+ () -> supportsStatistics.dropStatistics(Collections.emptyList()));
}
private String getTableStatisticsPath() {