{"action":"opened","issue":{"url":"https://api.github.com/repos/PDXostc/rvi/issues/14","labels_url":"https://api.github.com/repos/PDXostc/rvi/issues/14/labels{/name}","comments_url":"https://api.github.com/repos/PDXostc/rvi/issues/14/comments","events_url":"https://api.github.com/repos/PDXostc/rvi/issues/14/events","html_url":"https://github.com/PDXostc/rvi/issues/14","id":60927194,"number":14,"title":"Don't unregister services for a disconnected remote node that have already been re-registered.","user":{"login":"magnusfeuer","id":786918,"avatar_url":"https://avatars.githubusercontent.com/u/786918?v=3","gravatar_id":"","url":"https://api.github.com/users/magnusfeuer","html_url":"https://github.com/magnusfeuer","followers_url":"https://api.github.com/users/magnusfeuer/followers","following_url":"https://api.github.com/users/magnusfeuer/following{/other_user}","gists_url":"https://api.github.com/users/magnusfeuer/gists{/gist_id}","starred_url":"https://api.github.com/users/magnusfeuer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/magnusfeuer/subscriptions","organizations_url":"https://api.github.com/users/magnusfeuer/orgs","repos_url":"https://api.github.com/users/magnusfeuer/repos","events_url":"https://api.github.com/users/magnusfeuer/events{/privacy}","received_events_url":"https://api.github.com/users/magnusfeuer/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-03-12T22:53:08Z","updated_at":"2015-03-12T22:53:08Z","closed_at":null,"body":"1. RVI(client) connects to RVI(server)\r\n2. RVI(client) registers jlr.com/x/y\r\n3. RVI(client) power fails, and does not shut down connection to RVI(server)\r\n4. RVI(client) comes back up\r\n5. RVI(client) connects to RVI(server)\r\n6. RVI(client) registers jlr.com/x/y\r\n7. The old TCP/IP connection from Step 1 finally times out in RVI(server)\r\n8. RVI(server) deletes jlr.com/x/y from its tables since it was associated with the old connection.\r\n\r\nSolution is to have service_discovery:unregister_remote_services_by_address() verify that each service to be unregistered has not been registered from another peer address. Those that have been registered should not be dropped.\r\n"}}