{"action":"created","issue":{"url":"https://api.github.com/repos/yarpc/yarpc-go/issues/464","repository_url":"https://api.github.com/repos/yarpc/yarpc-go","labels_url":"https://api.github.com/repos/yarpc/yarpc-go/issues/464/labels{/name}","comments_url":"https://api.github.com/repos/yarpc/yarpc-go/issues/464/comments","events_url":"https://api.github.com/repos/yarpc/yarpc-go/issues/464/events","html_url":"https://github.com/yarpc/yarpc-go/issues/464","id":190880606,"number":464,"title":"Extract Start/Stop function into Lifecycle interface","user":{"login":"willhug","id":613317,"avatar_url":"https://avatars.githubusercontent.com/u/613317?v=3","gravatar_id":"","url":"https://api.github.com/users/willhug","html_url":"https://github.com/willhug","followers_url":"https://api.github.com/users/willhug/followers","following_url":"https://api.github.com/users/willhug/following{/other_user}","gists_url":"https://api.github.com/users/willhug/gists{/gist_id}","starred_url":"https://api.github.com/users/willhug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/willhug/subscriptions","organizations_url":"https://api.github.com/users/willhug/orgs","repos_url":"https://api.github.com/users/willhug/repos","events_url":"https://api.github.com/users/willhug/events{/privacy}","received_events_url":"https://api.github.com/users/willhug/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"willhug","id":613317,"avatar_url":"https://avatars.githubusercontent.com/u/613317?v=3","gravatar_id":"","url":"https://api.github.com/users/willhug","html_url":"https://github.com/willhug","followers_url":"https://api.github.com/users/willhug/followers","following_url":"https://api.github.com/users/willhug/following{/other_user}","gists_url":"https://api.github.com/users/willhug/gists{/gist_id}","starred_url":"https://api.github.com/users/willhug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/willhug/subscriptions","organizations_url":"https://api.github.com/users/willhug/orgs","repos_url":"https://api.github.com/users/willhug/repos","events_url":"https://api.github.com/users/willhug/events{/privacy}","received_events_url":"https://api.github.com/users/willhug/received_events","type":"User","site_admin":false},"assignees":[{"login":"willhug","id":613317,"avatar_url":"https://avatars.githubusercontent.com/u/613317?v=3","gravatar_id":"","url":"https://api.github.com/users/willhug","html_url":"https://github.com/willhug","followers_url":"https://api.github.com/users/willhug/followers","following_url":"https://api.github.com/users/willhug/following{/other_user}","gists_url":"https://api.github.com/users/willhug/gists{/gist_id}","starred_url":"https://api.github.com/users/willhug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/willhug/subscriptions","organizations_url":"https://api.github.com/users/willhug/orgs","repos_url":"https://api.github.com/users/willhug/repos","events_url":"https://api.github.com/users/willhug/events{/privacy}","received_events_url":"https://api.github.com/users/willhug/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/yarpc/yarpc-go/milestones/2","html_url":"https://github.com/yarpc/yarpc-go/milestones/1.0.0","labels_url":"https://api.github.com/repos/yarpc/yarpc-go/milestones/2/labels","id":1980652,"number":2,"title":"1.0.0","description":"Let's start identifying where we need to get before stabilizing the 1.0.0.","creator":{"login":"breerly","id":263587,"avatar_url":"https://avatars.githubusercontent.com/u/263587?v=3","gravatar_id":"","url":"https://api.github.com/users/breerly","html_url":"https://github.com/breerly","followers_url":"https://api.github.com/users/breerly/followers","following_url":"https://api.github.com/users/breerly/following{/other_user}","gists_url":"https://api.github.com/users/breerly/gists{/gist_id}","starred_url":"https://api.github.com/users/breerly/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/breerly/subscriptions","organizations_url":"https://api.github.com/users/breerly/orgs","repos_url":"https://api.github.com/users/breerly/repos","events_url":"https://api.github.com/users/breerly/events{/privacy}","received_events_url":"https://api.github.com/users/breerly/received_events","type":"User","site_admin":false},"open_issues":22,"closed_issues":25,"state":"open","created_at":"2016-09-02T17:50:11Z","updated_at":"2016-11-28T19:00:43Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2016-11-22T01:05:24Z","updated_at":"2016-11-28T22:56:17Z","closed_at":null,"body":"The Start/Stop pattern is used almost all objects in YARPC.  Based on feedback for other instances, we should have a common interface for controlling the lifecycle of objects\r\n\r\n```\r\ntype Lifecycle interface {\r\n  Start() Error\r\n  Stop() Error\r\n}\r\n```\r\n\r\nThe only issue is that outbounds & inbounds currently add objects to be passed in on start.  To get around this we can change the objects to take dependencies/ServiceDetails through other functions, or potentially splitting out just the `Stop` method and leaving `Start` alone"},"comment":{"url":"https://api.github.com/repos/yarpc/yarpc-go/issues/comments/263421528","html_url":"https://github.com/yarpc/yarpc-go/issues/464#issuecomment-263421528","issue_url":"https://api.github.com/repos/yarpc/yarpc-go/issues/464","id":263421528,"user":{"login":"kriskowal","id":60294,"avatar_url":"https://avatars.githubusercontent.com/u/60294?v=3","gravatar_id":"","url":"https://api.github.com/users/kriskowal","html_url":"https://github.com/kriskowal","followers_url":"https://api.github.com/users/kriskowal/followers","following_url":"https://api.github.com/users/kriskowal/following{/other_user}","gists_url":"https://api.github.com/users/kriskowal/gists{/gist_id}","starred_url":"https://api.github.com/users/kriskowal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kriskowal/subscriptions","organizations_url":"https://api.github.com/users/kriskowal/orgs","repos_url":"https://api.github.com/users/kriskowal/repos","events_url":"https://api.github.com/users/kriskowal/events{/privacy}","received_events_url":"https://api.github.com/users/kriskowal/received_events","type":"User","site_admin":false},"created_at":"2016-11-28T22:56:17Z","updated_at":"2016-11-28T22:56:17Z","body":"I think @nomis52 has it aright. The Start() is irrelevant. The \"lifecycle manager\" is only concerned about Stop() so the interface should be called Stopper. Anyone using this would likely invoke Start() and add the Stopper to a group, so that the root Stopper can stopper all Stoppers for graceful stopping."}}
{"actor":{"display_login":"kriskowal"}}