{"action":"opened","issue":{"url":"https://api.github.com/repos/rackerlabs/otter/issues/1624","labels_url":"https://api.github.com/repos/rackerlabs/otter/issues/1624/labels{/name}","comments_url":"https://api.github.com/repos/rackerlabs/otter/issues/1624/comments","events_url":"https://api.github.com/repos/rackerlabs/otter/issues/1624/events","html_url":"https://github.com/rackerlabs/otter/issues/1624","id":96931253,"number":1624,"title":"delete/remove server from group broken in convergence","user":{"login":"manishtomar","id":758529,"avatar_url":"https://avatars.githubusercontent.com/u/758529?v=3","gravatar_id":"","url":"https://api.github.com/users/manishtomar","html_url":"https://github.com/manishtomar","followers_url":"https://api.github.com/users/manishtomar/followers","following_url":"https://api.github.com/users/manishtomar/following{/other_user}","gists_url":"https://api.github.com/users/manishtomar/gists{/gist_id}","starred_url":"https://api.github.com/users/manishtomar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/manishtomar/subscriptions","organizations_url":"https://api.github.com/users/manishtomar/orgs","repos_url":"https://api.github.com/users/manishtomar/repos","events_url":"https://api.github.com/users/manishtomar/events{/privacy}","received_events_url":"https://api.github.com/users/manishtomar/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/rackerlabs/otter/labels/bug","name":"bug","color":"fc2929"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/rackerlabs/otter/milestones/4","html_url":"https://github.com/rackerlabs/otter/milestones/Convergence:%20Servers","labels_url":"https://api.github.com/repos/rackerlabs/otter/milestones/4/labels","id":972857,"number":4,"title":"Convergence: Servers","description":"Get to the point that we can enable convergence on servers for some tenants in production.\r\n\r\nNo CLB support is necessary. No RCv3 support is necessary. However, any core reliability/operational features (such as support for restarting in the middle of a convergence cycle or having useful logging) should be part of this milestone.","creator":{"login":"radix","id":227068,"avatar_url":"https://avatars.githubusercontent.com/u/227068?v=3","gravatar_id":"","url":"https://api.github.com/users/radix","html_url":"https://github.com/radix","followers_url":"https://api.github.com/users/radix/followers","following_url":"https://api.github.com/users/radix/following{/other_user}","gists_url":"https://api.github.com/users/radix/gists{/gist_id}","starred_url":"https://api.github.com/users/radix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/radix/subscriptions","organizations_url":"https://api.github.com/users/radix/orgs","repos_url":"https://api.github.com/users/radix/repos","events_url":"https://api.github.com/users/radix/events{/privacy}","received_events_url":"https://api.github.com/users/radix/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":24,"state":"open","created_at":"2015-02-10T00:36:04Z","updated_at":"2015-07-24T00:11:07Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2015-07-24T00:11:07Z","updated_at":"2015-07-24T00:11:07Z","closed_at":null,"body":"For convergence tenant when deleting server otter either removes AS metadata altogether (purge=false) or sets draining metadata (purge=true) and triggers convergence. Convergence gathering will not get updated metadata because it uses changes-since filter which doesn't return metadata updated servers. \r\n\r\n@cyli gave a wonderful idea to change server name when setting draining metadata to make changes-since work but I am not sure it will be acceptable for servers that are not being deleted (purge=false) since they will remain and customer may get confused seeing different name.\r\n\r\nAnother option could be to update metadata in the servers cache DB also along with updating the server but this can cause race condition between one node updating server info while converger node reading it mainly because the way converger updates the cache - by clearing all servers and inserting new ones. \r\n\r\nThe only other option I can think of is to have some kind of dirty flag for these servers in a separate table that will be checked when gathering and got separately. I _think_ that does not have any race conditions."}}