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

Nick Dimiduk commented on HBASE-13318:
--------------------------------------

I guess we can protect the {{listener}} access in {{getListenerAddress}} with a 
null-check. Alternately we can grab the address as a string once {{listener}} 
has been assigned, and make that available for exception logging. I'm not a fan 
of increasing the surface area of {{RpcServerInterface}} with the new API 
though.

> RpcServer.Listener.getAddress should be synchronized
> ----------------------------------------------------
>
>                 Key: HBASE-13318
>                 URL: https://issues.apache.org/jira/browse/HBASE-13318
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.98.10.1
>            Reporter: Lars Hofhansl
>            Priority: Minor
>              Labels: thread-safety
>
> We just saw exceptions like these:
> {noformat}
> Exception in thread "B.DefaultRpcServer.handler=45,queue=0,port=60020" 
> java.lang.NullPointerException
>       at 
> org.apache.hadoop.hbase.ipc.RpcServer$Listener.getAddress(RpcServer.java:753)
>       at 
> org.apache.hadoop.hbase.ipc.RpcServer.getListenerAddress(RpcServer.java:2157)
>       at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:146)
>       at 
> org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
>       at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
>       at java.lang.Thread.run(Thread.java:745)
> {noformat}
> Looks like RpcServer$Listener.getAddress should be synchronized 
> (acceptChannel is set to null upon exiting the thread under in a synchronized 
> block).
> Should be happening very rarely only.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to