[ 
https://issues.apache.org/jira/browse/HDFS-17876?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18053777#comment-18053777
 ] 

ASF GitHub Bot commented on HDFS-17876:
---------------------------------------

hadoop-yetus commented on PR #8200:
URL: https://github.com/apache/hadoop/pull/8200#issuecomment-3788451978

   :broken_heart: **-1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |  21m 40s |  |  Docker mode activated.  |
   |||| _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files 
found.  |
   | +0 :ok: |  codespell  |   0m  0s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  0s |  |  detect-secrets was not available.  
|
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain 
any @author tags.  |
   | -1 :x: |  test4tests  |   0m  0s |  |  The patch doesn't appear to include 
any new or modified tests. Please justify why no new tests are needed for this 
patch. Also please list what manual steps were performed to verify this patch.  
|
   |||| _ trunk Compile Tests _ |
   | +1 :green_heart: |  mvninstall  |  49m 33s |  |  trunk passed  |
   | +1 :green_heart: |  compile  |   1m 46s |  |  trunk passed with JDK 
Ubuntu-21.0.7+6-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  compile  |   1m 46s |  |  trunk passed with JDK 
Ubuntu-17.0.15+6-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  checkstyle  |   1m 16s |  |  trunk passed  |
   | +1 :green_heart: |  mvnsite  |   1m 57s |  |  trunk passed  |
   | +1 :green_heart: |  javadoc  |   1m 30s |  |  trunk passed with JDK 
Ubuntu-21.0.7+6-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   1m 29s |  |  trunk passed with JDK 
Ubuntu-17.0.15+6-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  spotbugs  |   4m 24s |  |  trunk passed  |
   | +1 :green_heart: |  shadedclient  |  36m 51s |  |  branch has no errors 
when building and testing our client artifacts.  |
   |||| _ Patch Compile Tests _ |
   | +1 :green_heart: |  mvninstall  |   1m 25s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   1m 16s |  |  the patch passed with JDK 
Ubuntu-21.0.7+6-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javac  |   1m 16s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   1m 20s |  |  the patch passed with JDK 
Ubuntu-17.0.15+6-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javac  |   1m 20s |  |  the patch passed  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks 
issues.  |
   | +1 :green_heart: |  checkstyle  |   0m 46s |  |  the patch passed  |
   | +1 :green_heart: |  mvnsite  |   1m 30s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 59s |  |  the patch passed with JDK 
Ubuntu-21.0.7+6-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   1m  3s |  |  the patch passed with JDK 
Ubuntu-17.0.15+6-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  spotbugs  |   4m  3s |  |  the patch passed  |
   | +1 :green_heart: |  shadedclient  |  35m 14s |  |  patch has no errors 
when building and testing our client artifacts.  |
   |||| _ Other Tests _ |
   | -1 :x: |  unit  | 256m 44s | 
[/patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8200/1/artifact/out/patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt)
 |  hadoop-hdfs in the patch passed.  |
   | +1 :green_heart: |  asflicense  |   0m 49s |  |  The patch does not 
generate ASF License warnings.  |
   |  |   | 425m 50s |  |  |
   
   
   | Reason | Tests |
   |-------:|:------|
   | Failed junit tests | hadoop.hdfs.tools.TestDFSAdmin |
   |   | hadoop.hdfs.server.namenode.ha.TestStandbyCheckpoints |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.52 ServerAPI=1.52 base: 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8200/1/artifact/out/Dockerfile
 |
   | GITHUB PR | https://github.com/apache/hadoop/pull/8200 |
   | Optional Tests | dupname asflicense compile javac javadoc mvninstall 
mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets |
   | uname | Linux 226dfa97161c 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 
20:25:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/bin/hadoop.sh |
   | git revision | trunk / 696a87772799fa457394f5a7f1b64bb2d5c5932b |
   | Default Java | Ubuntu-17.0.15+6-Ubuntu-0ubuntu120.04 |
   | Multi-JDK versions | 
/usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.7+6-Ubuntu-0ubuntu120.04 
/usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.15+6-Ubuntu-0ubuntu120.04 |
   |  Test Results | 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8200/1/testReport/ |
   | Max. process+thread count | 2351 (vs. ulimit of 5500) |
   | modules | C: hadoop-hdfs-project/hadoop-hdfs U: 
hadoop-hdfs-project/hadoop-hdfs |
   | Console output | 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8200/1/console |
   | versions | git=2.25.1 maven=3.9.11 spotbugs=4.9.7 |
   | Powered by | Apache Yetus 0.14.1 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   




> NameNode.stop() missing null check for tracer.close() can cause NPE during 
> shutdown
> -----------------------------------------------------------------------------------
>
>                 Key: HDFS-17876
>                 URL: https://issues.apache.org/jira/browse/HDFS-17876
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>    Affects Versions: 3.3.5, 3.3.6
>            Reporter: rstest
>            Priority: Major
>              Labels: pull-request-available
>
> The NameNode.stop() method acks a null check for the tracer field before 
> calling tracer.close().
> This is inconsistent with how all other resources are handled in the same 
> method and can lead to a NPE during shutdown if the NameNode is stopped 
> before fully initializing.                
>  
> {code:java}
>   public void stop() {                               
>       synchronized(this) {                           
>         if (stopRequested)                           
>           return;                                    
>         stopRequested = true;                        
>       }                                              
>       try {                                          
>         if (state != null) {                    // NULL CHECK
>           state.exitState(haContext);                
>         }                                            
>       } catch (ServiceFailedException e) {           
>         LOG.warn("Encountered exception while exiting state", e);
>       } finally {
>         stopMetricsLogger();                         
>         stopCommonServices();
>         if (metrics != null) {                  // NULL CHECK
>           metrics.shutdown();                        
>         }                                            
>         if (namesystem != null) {               // NULL CHECK
>           namesystem.shutdown();                     
>         }                                            
>         if (nameNodeStatusBeanName != null) {   // NULL CHECK                 
>           MBeans.unregister(nameNodeStatusBeanName); 
>           nameNodeStatusBeanName = null;
>         }                                            
>         if (levelDBAliasMapServer != null) {    // NULL CHECK
>           levelDBAliasMapServer.close();             
>         }                                            
>       }                                              
>       tracer.close();                           // NO NULL CHECK
>   }  {code}
> h2. How tracer Can Be Null                             
>   1. Exception in parent constructor: If super(conf) at line 1007 throws 
> before tracer is initialized at line 1008, tracer remains null.               
>                                                                
>   2. Early shutdown during initialization: The stopAtException() method (line 
> 1048) calls this.stop() when exceptions occur during initialization. If 
> initialization fails early, tracer may not be set.              
>   3. Subclass or future refactoring: A subclass could override initialization 
> behavior or future code changes could introduce paths where tracer isn't 
> initialized before stop() is called.                           
> {code:java}
> java.lang.NullPointerException                     
>       at 
> org.apache.hadoop.hdfs.server.namenode.NameNode.stop(NameNode.java:1116)
>       at 
> org.apache.hadoop.hdfs.server.namenode.NameNode.stopAtException(NameNode.java:1050)
>       at 
> org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:1036){code}
> h2. Proposed Fix                                        
> Add a null check for tracer consistent with the other resources in the 
> method:          
> {code:java}
>   if (tracer != null) {                              
>       tracer.close();                                
>   }  {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to