{"action":"created","issue":{"url":"https://api.github.com/repos/mesosphere/marathon/issues/2305","labels_url":"https://api.github.com/repos/mesosphere/marathon/issues/2305/labels{/name}","comments_url":"https://api.github.com/repos/mesosphere/marathon/issues/2305/comments","events_url":"https://api.github.com/repos/mesosphere/marathon/issues/2305/events","html_url":"https://github.com/mesosphere/marathon/pull/2305","id":108109294,"number":2305,"title":"Make TaskTracker use EntityStore","user":{"login":"meichstedt","id":414354,"avatar_url":"https://avatars.githubusercontent.com/u/414354?v=3","gravatar_id":"","url":"https://api.github.com/users/meichstedt","html_url":"https://github.com/meichstedt","followers_url":"https://api.github.com/users/meichstedt/followers","following_url":"https://api.github.com/users/meichstedt/following{/other_user}","gists_url":"https://api.github.com/users/meichstedt/gists{/gist_id}","starred_url":"https://api.github.com/users/meichstedt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meichstedt/subscriptions","organizations_url":"https://api.github.com/users/meichstedt/orgs","repos_url":"https://api.github.com/users/meichstedt/repos","events_url":"https://api.github.com/users/meichstedt/events{/privacy}","received_events_url":"https://api.github.com/users/meichstedt/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mesosphere/marathon/labels/in%20progress","name":"in progress","color":"5319e7"},{"url":"https://api.github.com/repos/mesosphere/marathon/labels/service","name":"service","color":"eb6420"}],"state":"open","locked":false,"assignee":{"login":"meichstedt","id":414354,"avatar_url":"https://avatars.githubusercontent.com/u/414354?v=3","gravatar_id":"","url":"https://api.github.com/users/meichstedt","html_url":"https://github.com/meichstedt","followers_url":"https://api.github.com/users/meichstedt/followers","following_url":"https://api.github.com/users/meichstedt/following{/other_user}","gists_url":"https://api.github.com/users/meichstedt/gists{/gist_id}","starred_url":"https://api.github.com/users/meichstedt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meichstedt/subscriptions","organizations_url":"https://api.github.com/users/meichstedt/orgs","repos_url":"https://api.github.com/users/meichstedt/repos","events_url":"https://api.github.com/users/meichstedt/events{/privacy}","received_events_url":"https://api.github.com/users/meichstedt/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/mesosphere/marathon/milestones/20","html_url":"https://github.com/mesosphere/marathon/milestones/0.12.0","labels_url":"https://api.github.com/repos/mesosphere/marathon/milestones/20/labels","id":1231438,"number":20,"title":"0.12.0","description":"RC-1 will be released on 2015-09-14","creator":{"login":"aquamatthias","id":330485,"avatar_url":"https://avatars.githubusercontent.com/u/330485?v=3","gravatar_id":"","url":"https://api.github.com/users/aquamatthias","html_url":"https://github.com/aquamatthias","followers_url":"https://api.github.com/users/aquamatthias/followers","following_url":"https://api.github.com/users/aquamatthias/following{/other_user}","gists_url":"https://api.github.com/users/aquamatthias/gists{/gist_id}","starred_url":"https://api.github.com/users/aquamatthias/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aquamatthias/subscriptions","organizations_url":"https://api.github.com/users/aquamatthias/orgs","repos_url":"https://api.github.com/users/aquamatthias/repos","events_url":"https://api.github.com/users/aquamatthias/events{/privacy}","received_events_url":"https://api.github.com/users/aquamatthias/received_events","type":"User","site_admin":false},"open_issues":71,"closed_issues":54,"state":"open","created_at":"2015-07-29T12:23:28Z","updated_at":"2015-09-28T10:52:08Z","due_on":"2015-09-27T22:00:00Z","closed_at":null},"comments":2,"created_at":"2015-09-24T11:05:38Z","updated_at":"2015-09-28T10:54:40Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/mesosphere/marathon/pulls/2305","html_url":"https://github.com/mesosphere/marathon/pull/2305","diff_url":"https://github.com/mesosphere/marathon/pull/2305.diff","patch_url":"https://github.com/mesosphere/marathon/pull/2305.patch"},"body":"Fixes #2282. Minimally invasive implementation to use EntityStore in TaskTracker. MarathonTask is generated and final and cannot directly extend MarathonState. To enable usage of the existing EntityStore and MarathonStore implementations, I added the MarathonTaskState wrapper, that is used to wrap a MarathonTask into a representation that can be used to parameterise EntityStore and MarathonStore.\r\n\r\nSuggested review order:\r\n1. MarathonTaskState\r\n1. TaskTracker\r\n1. MarathonModule\r\n1. everything else\r\n"},"comment":{"url":"https://api.github.com/repos/mesosphere/marathon/issues/comments/143710417","html_url":"https://github.com/mesosphere/marathon/pull/2305#issuecomment-143710417","issue_url":"https://api.github.com/repos/mesosphere/marathon/issues/2305","id":143710417,"user":{"login":"meichstedt","id":414354,"avatar_url":"https://avatars.githubusercontent.com/u/414354?v=3","gravatar_id":"","url":"https://api.github.com/users/meichstedt","html_url":"https://github.com/meichstedt","followers_url":"https://api.github.com/users/meichstedt/followers","following_url":"https://api.github.com/users/meichstedt/following{/other_user}","gists_url":"https://api.github.com/users/meichstedt/gists{/gist_id}","starred_url":"https://api.github.com/users/meichstedt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meichstedt/subscriptions","organizations_url":"https://api.github.com/users/meichstedt/orgs","repos_url":"https://api.github.com/users/meichstedt/repos","events_url":"https://api.github.com/users/meichstedt/events{/privacy}","received_events_url":"https://api.github.com/users/meichstedt/received_events","type":"User","site_admin":false},"created_at":"2015-09-28T10:54:40Z","updated_at":"2015-09-28T10:54:40Z","body":"The scope of this ticket was only to replace the custom implementation with existing  generalisation. I added a TaskRepo, but left the accessors provided by TaskTracker in place – refactoring that should be part of #2299. Refactoring reads/writes to TaskTracker is more involved and requires state synchronisation (of TaskTracker internal inMemory state and the persistence layer)."}}