[ https://issues.apache.org/jira/browse/CURATOR-94?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14710851#comment-14710851 ]
ASF GitHub Bot commented on CURATOR-94: --------------------------------------- Github user dtrott commented on the pull request: https://github.com/apache/curator/pull/2#issuecomment-134519167 I am afraid that this patch is more than a year old and the underlying code has changed. I believe the original code with the patch applied looked like this: https://github.com/dtrott/curator/blob/CURATOR-94/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/details/ServiceDiscoveryImpl.java Hence your suggestion of unregistered and re-registering would have worked, however as you have pointed out, this approach will not work any more as unregistration now requires that the service be in the map. I have not looked at this issue since the patch was submitted (it worked for me ;-) however a **very** cursory scan of the current code base didn't indicate the the core issue had been fixed (PERMANENT services are not permanent). I don't really like my original suggestion of loading PERMANENT registrations into all clients, as it would require a lot more overhead to monitor (watch) and load registrations in other clients, a simpler solution would be to add special cases to the update and unregister methods so that they load PERMANENT the record from zookeper instead of using the map, however I suspect that this might introduce some nasty race conditions - frankly I would be fine with this and resolve the issue with documentation ... "PERMANENT registrations require external synchronization", however I can see why others may feel that isn't clean. I would also recommend confirming if the bug still exists and if so, removing PERMANENT until such time as someone creates a workable patch... otherwise the code base is just leaving a landmine for someone else to step on .... > PERMANENT registration should not be added to the services map. > --------------------------------------------------------------- > > Key: CURATOR-94 > URL: https://issues.apache.org/jira/browse/CURATOR-94 > Project: Apache Curator > Issue Type: Bug > Components: Framework > Affects Versions: 2.4.0 > Reporter: David Trott > > In ServiceDiscoveryImpl the registerService(...) method should be: > { > if (service.getServiceType() == ServiceType.STATIC) > { > services.put(service.getId(), service); > } > internalRegisterService(service); > } > This prevents two side effects: > + PERMANENT registration are not deleted when the ServiceDiscoveryImpl class > is closed. > + PERMANENT registration are not re-registered (potentially with old data) > after a connection loss event. > The first case is a problem, since shutting down the registration app cleanly > deletes all PERMANENT registrations. > Additionally since PERMANENT registrations do not use ephemeral nodes the > re-registration functionality is not needed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)