[ https://issues.apache.org/jira/browse/CURATOR-164?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14505804#comment-14505804 ]
Jordan Zimmerman commented on CURATOR-164: ------------------------------------------ It's no so much removing the sync as I'm not convinced that the ServiceInstance is a good sync target. It changes over time. For example, look at how watched instances are handled. Also, independently, while looking at the code I realized the separate watchers map doesn't make sense. Consolidating everything into a single "holder" solves a lot of problems. Once that was done, the sync became unnecessary. > curator-x-discovery: unregisterService is not guaranteed to remove the > service, due to reconnectListener concurrency issue > -------------------------------------------------------------------------------------------------------------------------- > > Key: CURATOR-164 > URL: https://issues.apache.org/jira/browse/CURATOR-164 > Project: Apache Curator > Issue Type: Bug > Components: Framework > Affects Versions: 2.7.0 > Reporter: Rasmus Berg Palm > Assignee: Jordan Zimmerman > Priority: Critical > Fix For: 2.8.0 > > > In ServiceDiscoveryImpl: > When unregistering a service, the reconnect listener might fire while > deleting the path. > This can cause a condition where the delete finishes successfully, the > service is removed from services, and then the reRegisterServices completes > successfully and the service is added back in ZK and in services, end result > being that the service was not removed, even though unregisterService did not > throw any exceptions. > Essentially the use of the internal 'services' cache makes for a nightmare of > concurrency issues. I put this as critical as the library it's really not > usable IMO. -- This message was sent by Atlassian JIRA (v6.3.4#6332)