curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <>
Subject [jira] [Commented] (CURATOR-94) PERMANENT registration should not be added to the services map.
Date Tue, 25 Aug 2015 08:20:45 GMT


ASF GitHub Bot commented on CURATOR-94:

Github user dtrott commented on the pull request:
    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:
    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:
>             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

View raw message