{"action":"created","issue":{"url":"https://api.github.com/repos/Metaswitch/calico/issues/142","labels_url":"https://api.github.com/repos/Metaswitch/calico/issues/142/labels{/name}","comments_url":"https://api.github.com/repos/Metaswitch/calico/issues/142/comments","events_url":"https://api.github.com/repos/Metaswitch/calico/issues/142/events","html_url":"https://github.com/Metaswitch/calico/issues/142","id":55257623,"number":142,"title":"Felix needs to respond faster to ENDPOINT* messages.","user":{"login":"Lukasa","id":1382556,"avatar_url":"https://avatars.githubusercontent.com/u/1382556?v=3","gravatar_id":"","url":"https://api.github.com/users/Lukasa","html_url":"https://github.com/Lukasa","followers_url":"https://api.github.com/users/Lukasa/followers","following_url":"https://api.github.com/users/Lukasa/following{/other_user}","gists_url":"https://api.github.com/users/Lukasa/gists{/gist_id}","starred_url":"https://api.github.com/users/Lukasa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Lukasa/subscriptions","organizations_url":"https://api.github.com/users/Lukasa/orgs","repos_url":"https://api.github.com/users/Lukasa/repos","events_url":"https://api.github.com/users/Lukasa/events{/privacy}","received_events_url":"https://api.github.com/users/Lukasa/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Metaswitch/calico/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/Metaswitch/calico/labels/Felix","name":"Felix","color":"5319e7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-01-23T08:44:39Z","updated_at":"2015-01-26T09:29:27Z","closed_at":null,"body":"On slow systems, Felix can cause problems by blocking its responses to ENDPOINT* messages behind doing work. This is particularly problematic on ENDPOINTCREATED messages, where ipsets and iptables programming occurs before Felix responds.\r\n\r\nArguably, Felix should do as much as it can to give it confidence that it can program the interface before responding, but by the time we're putting iptables rules in we're surely pretty confident we can program it!\r\n\r\nThis has caused problems when running on VMs: see metaswitch/calico-docker#2."},"comment":{"url":"https://api.github.com/repos/Metaswitch/calico/issues/comments/71433645","html_url":"https://github.com/Metaswitch/calico/issues/142#issuecomment-71433645","issue_url":"https://api.github.com/repos/Metaswitch/calico/issues/142","id":71433645,"user":{"login":"plwhite","id":8448749,"avatar_url":"https://avatars.githubusercontent.com/u/8448749?v=3","gravatar_id":"","url":"https://api.github.com/users/plwhite","html_url":"https://github.com/plwhite","followers_url":"https://api.github.com/users/plwhite/followers","following_url":"https://api.github.com/users/plwhite/following{/other_user}","gists_url":"https://api.github.com/users/plwhite/gists{/gist_id}","starred_url":"https://api.github.com/users/plwhite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/plwhite/subscriptions","organizations_url":"https://api.github.com/users/plwhite/orgs","repos_url":"https://api.github.com/users/plwhite/repos","events_url":"https://api.github.com/users/plwhite/events{/privacy}","received_events_url":"https://api.github.com/users/plwhite/received_events","type":"User","site_admin":false},"created_at":"2015-01-26T09:29:27Z","updated_at":"2015-01-26T09:29:27Z","body":"I think it makes sense to respond immediately, but it's not clear it helps in general. Suppose a resync is going on - the plugin is going to be throwing creates at Felix as fast as it can. If Felix responds OK, then goes and works for 15 seconds, it just means it is the next cycle that hits the problem.\r\n\r\nWe either need to restructure to make Felix threaded, or we need to do something more clever with keepalive messages and logic."}}