{"action":"created","issue":{"url":"https://api.github.com/repos/Particular/NServiceBus/issues/3168","labels_url":"https://api.github.com/repos/Particular/NServiceBus/issues/3168/labels{/name}","comments_url":"https://api.github.com/repos/Particular/NServiceBus/issues/3168/comments","events_url":"https://api.github.com/repos/Particular/NServiceBus/issues/3168/events","html_url":"https://github.com/Particular/NServiceBus/pull/3168","id":120387934,"number":3168,"title":"remove obosolete OnStart and OnStop methods from FeatureStartupTask","user":{"login":"timbussmann","id":3524870,"avatar_url":"https://avatars.githubusercontent.com/u/3524870?v=3","gravatar_id":"","url":"https://api.github.com/users/timbussmann","html_url":"https://github.com/timbussmann","followers_url":"https://api.github.com/users/timbussmann/followers","following_url":"https://api.github.com/users/timbussmann/following{/other_user}","gists_url":"https://api.github.com/users/timbussmann/gists{/gist_id}","starred_url":"https://api.github.com/users/timbussmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timbussmann/subscriptions","organizations_url":"https://api.github.com/users/timbussmann/orgs","repos_url":"https://api.github.com/users/timbussmann/repos","events_url":"https://api.github.com/users/timbussmann/events{/privacy}","received_events_url":"https://api.github.com/users/timbussmann/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Particular/NServiceBus/labels/State:%20In%20Progress","name":"State: In Progress","color":"ededed"}],"state":"open","locked":false,"assignee":{"login":"timbussmann","id":3524870,"avatar_url":"https://avatars.githubusercontent.com/u/3524870?v=3","gravatar_id":"","url":"https://api.github.com/users/timbussmann","html_url":"https://github.com/timbussmann","followers_url":"https://api.github.com/users/timbussmann/followers","following_url":"https://api.github.com/users/timbussmann/following{/other_user}","gists_url":"https://api.github.com/users/timbussmann/gists{/gist_id}","starred_url":"https://api.github.com/users/timbussmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timbussmann/subscriptions","organizations_url":"https://api.github.com/users/timbussmann/orgs","repos_url":"https://api.github.com/users/timbussmann/repos","events_url":"https://api.github.com/users/timbussmann/events{/privacy}","received_events_url":"https://api.github.com/users/timbussmann/received_events","type":"User","site_admin":false},"milestone":null,"comments":5,"created_at":"2015-12-04T11:59:43Z","updated_at":"2015-12-09T07:57:31Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Particular/NServiceBus/pulls/3168","html_url":"https://github.com/Particular/NServiceBus/pull/3168","diff_url":"https://github.com/Particular/NServiceBus/pull/3168.diff","patch_url":"https://github.com/Particular/NServiceBus/pull/3168.patch"},"body":"implementing the virtual methods marked as obsolete doesn't yield an error. Therefore keeping these methods there is quite dangerous since the user may never notice (in case he's not calling the base method) while the code never executes.\r\n\r\nFor `OnStart` this shouldn't be an issue anyway, since the new OnStart is abstract, therefore users have to implement the correct OnStart method, but OnStop is easily missed.\r\n\r\nShould OnStop also be abstract?"},"comment":{"url":"https://api.github.com/repos/Particular/NServiceBus/issues/comments/163144464","html_url":"https://github.com/Particular/NServiceBus/pull/3168#issuecomment-163144464","issue_url":"https://api.github.com/repos/Particular/NServiceBus/issues/3168","id":163144464,"user":{"login":"danielmarbach","id":174258,"avatar_url":"https://avatars.githubusercontent.com/u/174258?v=3","gravatar_id":"","url":"https://api.github.com/users/danielmarbach","html_url":"https://github.com/danielmarbach","followers_url":"https://api.github.com/users/danielmarbach/followers","following_url":"https://api.github.com/users/danielmarbach/following{/other_user}","gists_url":"https://api.github.com/users/danielmarbach/gists{/gist_id}","starred_url":"https://api.github.com/users/danielmarbach/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielmarbach/subscriptions","organizations_url":"https://api.github.com/users/danielmarbach/orgs","repos_url":"https://api.github.com/users/danielmarbach/repos","events_url":"https://api.github.com/users/danielmarbach/events{/privacy}","received_events_url":"https://api.github.com/users/danielmarbach/received_events","type":"User","site_admin":false},"created_at":"2015-12-09T07:57:31Z","updated_at":"2015-12-09T07:57:31Z","body":"> For OnStart this shouldn't be an issue anyway, since the new OnStart is abstract, therefore users have to implement the correct OnStart method, but OnStop is easily missed.\r\n\r\nShould we add a reflection rule to the constructor? really not sure. I see your point about making `OnStop` mandatory to implement. It would address that. But forcing in general to override `OnStop` doesn't make much sense for me."}}