{"action":"created","issue":{"url":"https://api.github.com/repos/kubevirt/containerized-data-importer/issues/400","repository_url":"https://api.github.com/repos/kubevirt/containerized-data-importer","labels_url":"https://api.github.com/repos/kubevirt/containerized-data-importer/issues/400/labels{/name}","comments_url":"https://api.github.com/repos/kubevirt/containerized-data-importer/issues/400/comments","events_url":"https://api.github.com/repos/kubevirt/containerized-data-importer/issues/400/events","html_url":"https://github.com/kubevirt/containerized-data-importer/issues/400","id":355888157,"node_id":"MDU6SXNzdWUzNTU4ODgxNTc=","number":400,"title":"It looks like the cdi controller is not eventually consistent","user":{"login":"rmohr","id":4534621,"node_id":"MDQ6VXNlcjQ1MzQ2MjE=","avatar_url":"https://avatars3.githubusercontent.com/u/4534621?v=4","gravatar_id":"","url":"https://api.github.com/users/rmohr","html_url":"https://github.com/rmohr","followers_url":"https://api.github.com/users/rmohr/followers","following_url":"https://api.github.com/users/rmohr/following{/other_user}","gists_url":"https://api.github.com/users/rmohr/gists{/gist_id}","starred_url":"https://api.github.com/users/rmohr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmohr/subscriptions","organizations_url":"https://api.github.com/users/rmohr/orgs","repos_url":"https://api.github.com/users/rmohr/repos","events_url":"https://api.github.com/users/rmohr/events{/privacy}","received_events_url":"https://api.github.com/users/rmohr/received_events","type":"User","site_admin":false},"labels":[{"id":894026406,"node_id":"MDU6TGFiZWw4OTQwMjY0MDY=","url":"https://api.github.com/repos/kubevirt/containerized-data-importer/labels/discussion","name":"discussion","color":"dd9a73","default":false},{"id":806957634,"node_id":"MDU6TGFiZWw4MDY5NTc2MzQ=","url":"https://api.github.com/repos/kubevirt/containerized-data-importer/labels/kind/enhancement","name":"kind/enhancement","color":"bfd4f2","default":false}],"state":"open","locked":false,"assignee":{"login":"j-griffith","id":1231500,"node_id":"MDQ6VXNlcjEyMzE1MDA=","avatar_url":"https://avatars2.githubusercontent.com/u/1231500?v=4","gravatar_id":"","url":"https://api.github.com/users/j-griffith","html_url":"https://github.com/j-griffith","followers_url":"https://api.github.com/users/j-griffith/followers","following_url":"https://api.github.com/users/j-griffith/following{/other_user}","gists_url":"https://api.github.com/users/j-griffith/gists{/gist_id}","starred_url":"https://api.github.com/users/j-griffith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/j-griffith/subscriptions","organizations_url":"https://api.github.com/users/j-griffith/orgs","repos_url":"https://api.github.com/users/j-griffith/repos","events_url":"https://api.github.com/users/j-griffith/events{/privacy}","received_events_url":"https://api.github.com/users/j-griffith/received_events","type":"User","site_admin":false},"assignees":[{"login":"j-griffith","id":1231500,"node_id":"MDQ6VXNlcjEyMzE1MDA=","avatar_url":"https://avatars2.githubusercontent.com/u/1231500?v=4","gravatar_id":"","url":"https://api.github.com/users/j-griffith","html_url":"https://github.com/j-griffith","followers_url":"https://api.github.com/users/j-griffith/followers","following_url":"https://api.github.com/users/j-griffith/following{/other_user}","gists_url":"https://api.github.com/users/j-griffith/gists{/gist_id}","starred_url":"https://api.github.com/users/j-griffith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/j-griffith/subscriptions","organizations_url":"https://api.github.com/users/j-griffith/orgs","repos_url":"https://api.github.com/users/j-griffith/repos","events_url":"https://api.github.com/users/j-griffith/events{/privacy}","received_events_url":"https://api.github.com/users/j-griffith/received_events","type":"User","site_admin":false}],"milestone":null,"comments":8,"created_at":"2018-08-31T08:32:35Z","updated_at":"2018-10-20T15:02:07Z","closed_at":null,"author_association":"MEMBER","body":"It looks like the `DataVolume` will only try to import an image once and then just goes to a failed state. I think that such a behaviour is fine for workloads (Pod, VMI) but for infrastructure components it is very unusual (I actually can't remember to have seen such a behaviour).\r\n\r\nThe main issue with that is, that all other controllers which want to use data volumes will also have to manage retry-logic for them to make the system eventually consistent again. Normally controller include retry-logic (including back-off) themselves. Also the whole way on how controller are intended to be written with e.g. client-go are designed with that assumption in mind.\r\n\r\nAlso PVCs work that way. If a storage provisioner does not have enough space left to back the PVC with a PV, the PVC does not go to a final failed state. Instead, as soon as enough space is left, the provisioner will eventually create a PV and the PVC will go to a bound state.\r\n\r\nIt is not impossible that a controller can add a proper-retry logic for a DataVolume to itself (see for instance https://github.com/kubevirt/kubevirt/pull/1475), but it significantly increases the complexity of every consumer.\r\n\r\nWhat do you think?\r\n"},"comment":{"url":"https://api.github.com/repos/kubevirt/containerized-data-importer/issues/comments/431589160","html_url":"https://github.com/kubevirt/containerized-data-importer/issues/400#issuecomment-431589160","issue_url":"https://api.github.com/repos/kubevirt/containerized-data-importer/issues/400","id":431589160,"node_id":"MDEyOklzc3VlQ29tbWVudDQzMTU4OTE2MA==","user":{"login":"j-griffith","id":1231500,"node_id":"MDQ6VXNlcjEyMzE1MDA=","avatar_url":"https://avatars2.githubusercontent.com/u/1231500?v=4","gravatar_id":"","url":"https://api.github.com/users/j-griffith","html_url":"https://github.com/j-griffith","followers_url":"https://api.github.com/users/j-griffith/followers","following_url":"https://api.github.com/users/j-griffith/following{/other_user}","gists_url":"https://api.github.com/users/j-griffith/gists{/gist_id}","starred_url":"https://api.github.com/users/j-griffith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/j-griffith/subscriptions","organizations_url":"https://api.github.com/users/j-griffith/orgs","repos_url":"https://api.github.com/users/j-griffith/repos","events_url":"https://api.github.com/users/j-griffith/events{/privacy}","received_events_url":"https://api.github.com/users/j-griffith/received_events","type":"User","site_admin":false},"created_at":"2018-10-20T15:02:07Z","updated_at":"2018-10-20T15:02:07Z","author_association":"COLLABORATOR","body":"@rmohr \r\n\r\n> Let me reopen the issue since as far as I understand #481, it only adds parts of the requirements.\r\n\r\nCorrect, that was a partial; still need to deal with clone pods and it doesn't attempt to do fencing to deal with node failures. "}}
{"actor":{"display_login":"j-griffith"}}