You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@curator.apache.org by "Matthias Pohl (Jira)" <ji...@apache.org> on 2022/08/19 11:26:00 UTC

[jira] [Commented] (CURATOR-538) Background exception was not retry-able or retry gave up

    [ 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)