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

Matthias Pohl commented on CURATOR-538:
---------------------------------------

[~cj] out of curiosity: What was your reasoning behind closing this issue? The 
[telepresenceio issue 
#161|https://github.com/telepresenceio/telepresence/issues/161] might be 
related somehow (although, I don't understand the full magnitude of it to be 
fair) but it leaves curator still in a place where this specific case is not 
handled properly. I did some investigation into the issue on when exactly the 
address is set to {{null}} (more specifically, I looked into the Java8 
implementation of {{InetAddress}} which seems to be the relevant piece of code 
in 
[curator:Compatibility:116](https://github.com/apache/curator/blob/d65669b64f003326c98843b32b997e3ffab1e442/curator-client/src/main/java/org/apache/curator/utils/Compatibility.java#L116)).

The relevant entry point is {{InetSocketAddress#getAddress()}} which will 
forward the call to the internally held {{InetSocketAddressHolder}} instance 
through its {{getAddress()}} method. This boils down to the question how the 
{{InetSocketAddressHolder}} is initialized to return {{null}} as an address. It 
turns out that this can only happen if the {{InetSocketAddress}} is initialized 
through {{InetSocketAddress#createUnresolved}}. This seems to be a valid 
use-case that needs to be properly covered by curator. I would appreciate if 
someone can verify my finding (JDK version used: {{8.0.345-tem}}).

The proper solution would be, I guess, to add a {{null}} check as already 
proposed by [~randgalt]. Additionally, we might want to reopen this issue and 
close the duplicated issues CURATOR-597 and CURATOR-649.

> Background exception was not retry-able or retry gave up
> --------------------------------------------------------
>
>                 Key: CURATOR-538
>                 URL: https://issues.apache.org/jira/browse/CURATOR-538
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 4.0.1, 4.2.0
>            Reporter: imic
>            Priority: Critical
>         Attachments: 22.png
>
>
>  
> error log:
> {code:java}
> //err code is here
> 2019-08-21 14:24:30.654 0.0.0.0:30901  INFO 45964     --- [e-1-EventThread] 
> org.apache.zookeeper.ClientCnxn          : EventThread shut down for session: 
> 0x10072ab8a8001b12019-08-21 14:24:30.654 0.0.0.0:30901  INFO 45964     --- 
> [e-1-EventThread] org.apache.zookeeper.ClientCnxn          : EventThread shut 
> down for session: 0x10072ab8a8001b12019-08-21 14:24:30.655 0.0.0.0:30901 
> ERROR 45964     --- [e-1-EventThread] o.a.c.f.imps.CuratorFrameworkImpl       
>  : Background exception was not retry-able or retry gave up
> java.lang.NullPointerException: null at 
> org.apache.curator.framework.imps.EnsembleTracker.configToConnectionString(EnsembleTracker.java:179)
>  at 
> org.apache.curator.framework.imps.EnsembleTracker.processConfigData(EnsembleTracker.java:200)
>  at 
> org.apache.curator.framework.imps.EnsembleTracker.access$300(EnsembleTracker.java:50)
>  at 
> org.apache.curator.framework.imps.EnsembleTracker$2.processResult(EnsembleTracker.java:144)
>  at 
> org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:865)
>  at 
> org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:635)
>  at 
> org.apache.curator.framework.imps.WatcherRemovalFacade.processBackgroundOperation(WatcherRemovalFacade.java:152)
>  at 
> org.apache.curator.framework.imps.GetConfigBuilderImpl$2.processResult(GetConfigBuilderImpl.java:222)
>  at 
> org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:587) 
> at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:499)
> 2019-08-21 14:24:30.655 0.0.0.0:30901  INFO 45964     --- [e-1-EventThread] 
> o.a.c.framework.imps.EnsembleTracker     : New config event received: 
> {server.1=zookeeper-0.zk-headless-service.default.svc.cluster.local:2888:3888:participant;0.0.0.0:2181,
>  version=b00000000, 
> server.3=zookeeper-2.zk-headless-service.default.svc.cluster.local:2888:3888:participant;0.0.0.0:2181,
>  
> server.2=zookeeper-1.zk-headless-service.default.svc.cluster.local:2888:3888:participant;0.0.0.0:2181}2019-08-21
>  14:24:30.656 0.0.0.0:30901 ERROR 45964     --- [e-1-EventThread] 
> o.a.c.f.imps.CuratorFrameworkImpl        : Background exception was not 
> retry-able or retry gave up
> java.lang.NullPointerException: null at 
> org.apache.curator.framework.imps.EnsembleTracker.configToConnectionString(EnsembleTracker.java:179)
>  at 
> org.apache.curator.framework.imps.EnsembleTracker.processConfigData(EnsembleTracker.java:200)
>  at 
> org.apache.curator.framework.imps.EnsembleTracker.access$300(EnsembleTracker.java:50)
>  at 
> org.apache.curator.framework.imps.EnsembleTracker$2.processResult(EnsembleTracker.java:144)
>  at 
> org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:865)
>  at 
> org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:635)
>  at 
> org.apache.curator.framework.imps.WatcherRemovalFacade.processBackgroundOperation(WatcherRemovalFacade.java:152)
>  at 
> org.apache.curator.framework.imps.GetConfigBuilderImpl$2.processResult(GetConfigBuilderImpl.java:222)
>  at 
> org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:587) 
> at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:499)
> {code}
>  
>     I use kubernates as registor,  envirment is ubuntu18.04 + spring boot 2.x 
> and curator is 4.0.1(spring-cloud-starter-zookeeper-config),  when i debug 
> the project, curator framework throw NullPointerException.
>     I debuged it , found EnsembleTracker.java(line 179) 
> server.addr.getAddress() is null! debug info can be found at attachment!
>  
> QuorumVerifier is 
> {code:java}
> server.1=zookeeper-0.zk-headless-service.default.svc.cluster.local:2888:3888:participant;0.0.0.0:2181
> server.2=zookeeper-1.zk-headless-service.default.svc.cluster.local:2888:3888:participant;0.0.0.0:2181
> server.3=zookeeper-2.zk-headless-service.default.svc.cluster.local:2888:3888:participant;0.0.0.0:2181
> version=b00000000{code}
>  
>  



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

Reply via email to