{"action":"created","issue":{"url":"https://api.github.com/repos/linkerd/linkerd/issues/1810","repository_url":"https://api.github.com/repos/linkerd/linkerd","labels_url":"https://api.github.com/repos/linkerd/linkerd/issues/1810/labels{/name}","comments_url":"https://api.github.com/repos/linkerd/linkerd/issues/1810/comments","events_url":"https://api.github.com/repos/linkerd/linkerd/issues/1810/events","html_url":"https://github.com/linkerd/linkerd/pull/1810","id":295751503,"number":1810,"title":"Fix issue where k8s ingresses are sometimes not deleted ","user":{"login":"deebo91","id":2197104,"avatar_url":"https://avatars2.githubusercontent.com/u/2197104?v=4","gravatar_id":"","url":"https://api.github.com/users/deebo91","html_url":"https://github.com/deebo91","followers_url":"https://api.github.com/users/deebo91/followers","following_url":"https://api.github.com/users/deebo91/following{/other_user}","gists_url":"https://api.github.com/users/deebo91/gists{/gist_id}","starred_url":"https://api.github.com/users/deebo91/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deebo91/subscriptions","organizations_url":"https://api.github.com/users/deebo91/orgs","repos_url":"https://api.github.com/users/deebo91/repos","events_url":"https://api.github.com/users/deebo91/events{/privacy}","received_events_url":"https://api.github.com/users/deebo91/received_events","type":"User","site_admin":false},"labels":[{"id":311263252,"url":"https://api.github.com/repos/linkerd/linkerd/labels/reviewable","name":"reviewable","color":"33cc33","default":false}],"state":"open","locked":false,"assignee":{"login":"deebo91","id":2197104,"avatar_url":"https://avatars2.githubusercontent.com/u/2197104?v=4","gravatar_id":"","url":"https://api.github.com/users/deebo91","html_url":"https://github.com/deebo91","followers_url":"https://api.github.com/users/deebo91/followers","following_url":"https://api.github.com/users/deebo91/following{/other_user}","gists_url":"https://api.github.com/users/deebo91/gists{/gist_id}","starred_url":"https://api.github.com/users/deebo91/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deebo91/subscriptions","organizations_url":"https://api.github.com/users/deebo91/orgs","repos_url":"https://api.github.com/users/deebo91/repos","events_url":"https://api.github.com/users/deebo91/events{/privacy}","received_events_url":"https://api.github.com/users/deebo91/received_events","type":"User","site_admin":false},"assignees":[{"login":"deebo91","id":2197104,"avatar_url":"https://avatars2.githubusercontent.com/u/2197104?v=4","gravatar_id":"","url":"https://api.github.com/users/deebo91","html_url":"https://github.com/deebo91","followers_url":"https://api.github.com/users/deebo91/followers","following_url":"https://api.github.com/users/deebo91/following{/other_user}","gists_url":"https://api.github.com/users/deebo91/gists{/gist_id}","starred_url":"https://api.github.com/users/deebo91/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deebo91/subscriptions","organizations_url":"https://api.github.com/users/deebo91/orgs","repos_url":"https://api.github.com/users/deebo91/repos","events_url":"https://api.github.com/users/deebo91/events{/privacy}","received_events_url":"https://api.github.com/users/deebo91/received_events","type":"User","site_admin":false}],"milestone":null,"comments":9,"created_at":"2018-02-09T04:29:08Z","updated_at":"2018-02-15T18:52:49Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/linkerd/linkerd/pulls/1810","html_url":"https://github.com/linkerd/linkerd/pull/1810","diff_url":"https://github.com/linkerd/linkerd/pull/1810.diff","patch_url":"https://github.com/linkerd/linkerd/pull/1810.patch"},"body":"Problem\r\nLinkerd's `io.l5d.ingress` identifier watches ingress resources in order to function as an ingress controller in k8s. This watch receives events from k8s and relies on a `resourceVersion` to make sure the most up to date ingress is being used. The `resourceVersion` is supposedly a number that increases after a change event occurs on a resource. For a particular ingress resource, its `resourceVersion` increases after Add, Modify and Change events. Sometimes k8s returns a `resourceVersion` that is unchanged. Linkerd does not recognize this as a change since it expects a `resourceVersion` to always  be larger than the previously observed resource and therefore does not update its `IngressCache`.\r\n \r\nSolution\r\nThe solution is rather simple. When Linkerd encounters a `resourceVersion` that is the same as the \r\nthe previously observed we do not ignore the event and notify the ingress watch process to update the `IngressCache`\r\n\r\nValidation\r\nTests were done on a locally running Linkerd instance connected to k8s running on docker. Linkerd was able to update its `IngressCache` when an ingress was deleted in k8s.\r\n\r\nFixes #1791\r\n\r\nSigned-off-by: Dennis Adjei-Baah <dennis@buoyant.io>"},"comment":{"url":"https://api.github.com/repos/linkerd/linkerd/issues/comments/366025274","html_url":"https://github.com/linkerd/linkerd/pull/1810#issuecomment-366025274","issue_url":"https://api.github.com/repos/linkerd/linkerd/issues/1810","id":366025274,"user":{"login":"hawkw","id":2796466,"avatar_url":"https://avatars1.githubusercontent.com/u/2796466?v=4","gravatar_id":"","url":"https://api.github.com/users/hawkw","html_url":"https://github.com/hawkw","followers_url":"https://api.github.com/users/hawkw/followers","following_url":"https://api.github.com/users/hawkw/following{/other_user}","gists_url":"https://api.github.com/users/hawkw/gists{/gist_id}","starred_url":"https://api.github.com/users/hawkw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hawkw/subscriptions","organizations_url":"https://api.github.com/users/hawkw/orgs","repos_url":"https://api.github.com/users/hawkw/repos","events_url":"https://api.github.com/users/hawkw/events{/privacy}","received_events_url":"https://api.github.com/users/hawkw/received_events","type":"User","site_admin":false},"created_at":"2018-02-15T18:52:49Z","updated_at":"2018-02-15T18:52:49Z","author_association":"MEMBER","body":"@negz \r\n> my understanding is that `MODIFIED` objects will have a higher `resourceVersion`, while `DELETED` objects will have an unchanged `resourceVersion` because they return \"the state of the object immediately before deletion\".\r\n\r\nThat seems right to me --- thanks for putting that together. I have some thoughts on how to fix Linkerd's handling of watch events based on your observation, so hopefully we'll be able to start testing some changes soon! Thanks again."}}
{"actor":{"display_login":"hawkw"}}