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() {

Reply via email to