{"action":"created","issue":{"url":"https://api.github.com/repos/openshift/cluster-authentication-operator/issues/162","repository_url":"https://api.github.com/repos/openshift/cluster-authentication-operator","labels_url":"https://api.github.com/repos/openshift/cluster-authentication-operator/issues/162/labels{/name}","comments_url":"https://api.github.com/repos/openshift/cluster-authentication-operator/issues/162/comments","events_url":"https://api.github.com/repos/openshift/cluster-authentication-operator/issues/162/events","html_url":"https://github.com/openshift/cluster-authentication-operator/pull/162","id":474068082,"node_id":"MDExOlB1bGxSZXF1ZXN0MzAyMDgzMjAx","number":162,"title":"Bug 1733978: Correct race between config sync loop and resource syncer [4.1]","user":{"login":"stlaz","id":718169,"node_id":"MDQ6VXNlcjcxODE2OQ==","avatar_url":"https://avatars0.githubusercontent.com/u/718169?v=4","gravatar_id":"","url":"https://api.github.com/users/stlaz","html_url":"https://github.com/stlaz","followers_url":"https://api.github.com/users/stlaz/followers","following_url":"https://api.github.com/users/stlaz/following{/other_user}","gists_url":"https://api.github.com/users/stlaz/gists{/gist_id}","starred_url":"https://api.github.com/users/stlaz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stlaz/subscriptions","organizations_url":"https://api.github.com/users/stlaz/orgs","repos_url":"https://api.github.com/users/stlaz/repos","events_url":"https://api.github.com/users/stlaz/events{/privacy}","received_events_url":"https://api.github.com/users/stlaz/received_events","type":"User","site_admin":false},"labels":[{"id":1149091958,"node_id":"MDU6TGFiZWwxMTQ5MDkxOTU4","url":"https://api.github.com/repos/openshift/cluster-authentication-operator/labels/approved","name":"approved","color":"0ffa16","default":false},{"id":1393095537,"node_id":"MDU6TGFiZWwxMzkzMDk1NTM3","url":"https://api.github.com/repos/openshift/cluster-authentication-operator/labels/bugzilla/invalid-bug","name":"bugzilla/invalid-bug","color":"e11d21","default":false},{"id":1149096550,"node_id":"MDU6TGFiZWwxMTQ5MDk2NTUw","url":"https://api.github.com/repos/openshift/cluster-authentication-operator/labels/lgtm","name":"lgtm","color":"15dd18","default":false},{"id":1149097165,"node_id":"MDU6TGFiZWwxMTQ5MDk3MTY1","url":"https://api.github.com/repos/openshift/cluster-authentication-operator/labels/size/XL","name":"size/XL","color":"ee5500","default":false}],"state":"open","locked":false,"assignee":{"login":"enj","id":7001223,"node_id":"MDQ6VXNlcjcwMDEyMjM=","avatar_url":"https://avatars0.githubusercontent.com/u/7001223?v=4","gravatar_id":"","url":"https://api.github.com/users/enj","html_url":"https://github.com/enj","followers_url":"https://api.github.com/users/enj/followers","following_url":"https://api.github.com/users/enj/following{/other_user}","gists_url":"https://api.github.com/users/enj/gists{/gist_id}","starred_url":"https://api.github.com/users/enj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enj/subscriptions","organizations_url":"https://api.github.com/users/enj/orgs","repos_url":"https://api.github.com/users/enj/repos","events_url":"https://api.github.com/users/enj/events{/privacy}","received_events_url":"https://api.github.com/users/enj/received_events","type":"User","site_admin":false},"assignees":[{"login":"enj","id":7001223,"node_id":"MDQ6VXNlcjcwMDEyMjM=","avatar_url":"https://avatars0.githubusercontent.com/u/7001223?v=4","gravatar_id":"","url":"https://api.github.com/users/enj","html_url":"https://github.com/enj","followers_url":"https://api.github.com/users/enj/followers","following_url":"https://api.github.com/users/enj/following{/other_user}","gists_url":"https://api.github.com/users/enj/gists{/gist_id}","starred_url":"https://api.github.com/users/enj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enj/subscriptions","organizations_url":"https://api.github.com/users/enj/orgs","repos_url":"https://api.github.com/users/enj/repos","events_url":"https://api.github.com/users/enj/events{/privacy}","received_events_url":"https://api.github.com/users/enj/received_events","type":"User","site_admin":false}],"milestone":null,"comments":8,"created_at":"2019-07-29T13:59:04Z","updated_at":"2019-07-30T02:48:40Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/openshift/cluster-authentication-operator/pulls/162","html_url":"https://github.com/openshift/cluster-authentication-operator/pull/162","diff_url":"https://github.com/openshift/cluster-authentication-operator/pull/162.diff","patch_url":"https://github.com/openshift/cluster-authentication-operator/pull/162.patch"},"body":"This patch makes two primary changes:\r\n\r\n1. Generically track resource versions:\r\n\r\nWe depend on the following state:\r\n- The operator deployment itself\r\n- The authentications.operator.openshift.io resource\r\n- Config maps and secrets that are owned by the operator\r\n- The current observed (CLI) config (stored in a config map)\r\n- Config maps and secrets that are synced from openshift-config\r\n\r\nThus by tracking the:\r\n- operator deployment resource version\r\n- authentications.operator.openshift.io generation\r\n- resource version of config maps and secrets with config prefix\r\n\r\nwe can guarantee that we redeploy when our state has changed.\r\n\r\n2. Correct race between config sync loop and resource syncer\r\n\r\nThe code in master incorrectly assumed that the calls to List\r\ncontained all of the config maps and secrets that were being synced.\r\nSince the resource syncer cannot instantaneously sync resources, the\r\nList would race against it.  Thus the logic to determine what data\r\nwas in use and the corresponding resource versions would produce\r\nincorrect results due to invalid input.  This change completely\r\nremoves the need for the config sync code to track any resource\r\nversions.  It also moves the resource syncer calls up with\r\nadditional blocking code below it.  This blocking code will be\r\nretried until the calls to List and resource syncer have caught up.\r\nThis guarantees that the logic to determine what data is in use does\r\nnot produce incorrect results from invalid input.\r\n\r\nAdds unit tests for all of the above.\r\n\r\nSigned-off-by: Monis Khan <mkhan@redhat.com>"},"comment":{"url":"https://api.github.com/repos/openshift/cluster-authentication-operator/issues/comments/516238192","html_url":"https://github.com/openshift/cluster-authentication-operator/pull/162#issuecomment-516238192","issue_url":"https://api.github.com/repos/openshift/cluster-authentication-operator/issues/162","id":516238192,"node_id":"MDEyOklzc3VlQ29tbWVudDUxNjIzODE5Mg==","user":{"login":"jwforres","id":1467629,"node_id":"MDQ6VXNlcjE0Njc2Mjk=","avatar_url":"https://avatars2.githubusercontent.com/u/1467629?v=4","gravatar_id":"","url":"https://api.github.com/users/jwforres","html_url":"https://github.com/jwforres","followers_url":"https://api.github.com/users/jwforres/followers","following_url":"https://api.github.com/users/jwforres/following{/other_user}","gists_url":"https://api.github.com/users/jwforres/gists{/gist_id}","starred_url":"https://api.github.com/users/jwforres/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jwforres/subscriptions","organizations_url":"https://api.github.com/users/jwforres/orgs","repos_url":"https://api.github.com/users/jwforres/repos","events_url":"https://api.github.com/users/jwforres/events{/privacy}","received_events_url":"https://api.github.com/users/jwforres/received_events","type":"User","site_admin":false},"created_at":"2019-07-30T02:48:40Z","updated_at":"2019-07-30T02:48:40Z","author_association":"MEMBER","body":"Hasn't had soak time yet since master just merged today. Will likely wait for next week."}}
{"actor":{"display_login":"jwforres"}}