{"action":"opened","number":248,"pull_request":{"url":"https://api.github.com/repos/CorfuDB/CorfuDB/pulls/248","id":90085340,"html_url":"https://github.com/CorfuDB/CorfuDB/pull/248","diff_url":"https://github.com/CorfuDB/CorfuDB/pull/248.diff","patch_url":"https://github.com/CorfuDB/CorfuDB/pull/248.patch","issue_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/248","number":248,"state":"open","locked":false,"title":"Add QuickCheck model for LayoutView::updateLayout()","user":{"login":"slfritchie","id":75320,"avatar_url":"https://avatars.githubusercontent.com/u/75320?v=3","gravatar_id":"","url":"https://api.github.com/users/slfritchie","html_url":"https://github.com/slfritchie","followers_url":"https://api.github.com/users/slfritchie/followers","following_url":"https://api.github.com/users/slfritchie/following{/other_user}","gists_url":"https://api.github.com/users/slfritchie/gists{/gist_id}","starred_url":"https://api.github.com/users/slfritchie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/slfritchie/subscriptions","organizations_url":"https://api.github.com/users/slfritchie/orgs","repos_url":"https://api.github.com/users/slfritchie/repos","events_url":"https://api.github.com/users/slfritchie/events{/privacy}","received_events_url":"https://api.github.com/users/slfritchie/received_events","type":"User","site_admin":false},"body":"In addition to the QuickCheck model for LayoutView::updateLayout(), this branch:\r\n\r\n* Fix epoch-related bugs in TestClientRouter\r\n* Fix an epoch-related bug in updateLayout() itself\r\n\r\nThis QuickCheck test has exposed a problem with how resources are allocated for `CorfuRuntime`:\r\n\r\n            // Unfortunately, the runtime's stop() method is broken: it doesn't close all TCP\r\n            // connections, and leaks Netty client-side worker threads.\r\n            // FIX ME.  These leaks make QuickCheck testing extremely difficult.\r\n\r\nA long-term fix for this resource leak is beyond my current skill level, alas, so I'm going to leave it as-is for now.  A workaround for now:\r\n\r\n    Unfortunately, there's both a file descriptor leak and also\r\n    a kqueue/thread/both? leak.  We can only run about 17 prop_parallel()\r\n    tests before we run out of kqueue/thread/? thingies on my OS X box.\r\n    \r\n        > proper:quickcheck(proper:numtests(17,update_layout_qc:prop_parallel())).\r\n    \r\n    However, if we restart the Corfu server after every test like the\r\n    one above, then I can perform 10 in a row without errors, hooray.\r\n","created_at":"2016-10-19T20:34:49Z","updated_at":"2016-10-19T20:34:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6f9a631d12bb68e2cd05941e1e87a8f16a6cce42","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/CorfuDB/CorfuDB/pulls/248/commits","review_comments_url":"https://api.github.com/repos/CorfuDB/CorfuDB/pulls/248/comments","review_comment_url":"https://api.github.com/repos/CorfuDB/CorfuDB/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/248/comments","statuses_url":"https://api.github.com/repos/CorfuDB/CorfuDB/statuses/c9b4e865de8bceea0b9f149a6e810d51f076b629","head":{"label":"slfritchie:qc-update-layout2","ref":"qc-update-layout2","sha":"c9b4e865de8bceea0b9f149a6e810d51f076b629","user":{"login":"slfritchie","id":75320,"avatar_url":"https://avatars.githubusercontent.com/u/75320?v=3","gravatar_id":"","url":"https://api.github.com/users/slfritchie","html_url":"https://github.com/slfritchie","followers_url":"https://api.github.com/users/slfritchie/followers","following_url":"https://api.github.com/users/slfritchie/following{/other_user}","gists_url":"https://api.github.com/users/slfritchie/gists{/gist_id}","starred_url":"https://api.github.com/users/slfritchie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/slfritchie/subscriptions","organizations_url":"https://api.github.com/users/slfritchie/orgs","repos_url":"https://api.github.com/users/slfritchie/repos","events_url":"https://api.github.com/users/slfritchie/events{/privacy}","received_events_url":"https://api.github.com/users/slfritchie/received_events","type":"User","site_admin":false},"repo":{"id":60572322,"name":"CorfuDB","full_name":"slfritchie/CorfuDB","owner":{"login":"slfritchie","id":75320,"avatar_url":"https://avatars.githubusercontent.com/u/75320?v=3","gravatar_id":"","url":"https://api.github.com/users/slfritchie","html_url":"https://github.com/slfritchie","followers_url":"https://api.github.com/users/slfritchie/followers","following_url":"https://api.github.com/users/slfritchie/following{/other_user}","gists_url":"https://api.github.com/users/slfritchie/gists{/gist_id}","starred_url":"https://api.github.com/users/slfritchie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/slfritchie/subscriptions","organizations_url":"https://api.github.com/users/slfritchie/orgs","repos_url":"https://api.github.com/users/slfritchie/repos","events_url":"https://api.github.com/users/slfritchie/events{/privacy}","received_events_url":"https://api.github.com/users/slfritchie/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/slfritchie/CorfuDB","description":"A cluster consistency platform","fork":true,"url":"https://api.github.com/repos/slfritchie/CorfuDB","forks_url":"https://api.github.com/repos/slfritchie/CorfuDB/forks","keys_url":"https://api.github.com/repos/slfritchie/CorfuDB/keys{/key_id}","collaborators_url":"https://api.github.com/repos/slfritchie/CorfuDB/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/slfritchie/CorfuDB/teams","hooks_url":"https://api.github.com/repos/slfritchie/CorfuDB/hooks","issue_events_url":"https://api.github.com/repos/slfritchie/CorfuDB/issues/events{/number}","events_url":"https://api.github.com/repos/slfritchie/CorfuDB/events","assignees_url":"https://api.github.com/repos/slfritchie/CorfuDB/assignees{/user}","branches_url":"https://api.github.com/repos/slfritchie/CorfuDB/branches{/branch}","tags_url":"https://api.github.com/repos/slfritchie/CorfuDB/tags","blobs_url":"https://api.github.com/repos/slfritchie/CorfuDB/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/slfritchie/CorfuDB/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/slfritchie/CorfuDB/git/refs{/sha}","trees_url":"https://api.github.com/repos/slfritchie/CorfuDB/git/trees{/sha}","statuses_url":"https://api.github.com/repos/slfritchie/CorfuDB/statuses/{sha}","languages_url":"https://api.github.com/repos/slfritchie/CorfuDB/languages","stargazers_url":"https://api.github.com/repos/slfritchie/CorfuDB/stargazers","contributors_url":"https://api.github.com/repos/slfritchie/CorfuDB/contributors","subscribers_url":"https://api.github.com/repos/slfritchie/CorfuDB/subscribers","subscription_url":"https://api.github.com/repos/slfritchie/CorfuDB/subscription","commits_url":"https://api.github.com/repos/slfritchie/CorfuDB/commits{/sha}","git_commits_url":"https://api.github.com/repos/slfritchie/CorfuDB/git/commits{/sha}","comments_url":"https://api.github.com/repos/slfritchie/CorfuDB/comments{/number}","issue_comment_url":"https://api.github.com/repos/slfritchie/CorfuDB/issues/comments{/number}","contents_url":"https://api.github.com/repos/slfritchie/CorfuDB/contents/{+path}","compare_url":"https://api.github.com/repos/slfritchie/CorfuDB/compare/{base}...{head}","merges_url":"https://api.github.com/repos/slfritchie/CorfuDB/merges","archive_url":"https://api.github.com/repos/slfritchie/CorfuDB/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/slfritchie/CorfuDB/downloads","issues_url":"https://api.github.com/repos/slfritchie/CorfuDB/issues{/number}","pulls_url":"https://api.github.com/repos/slfritchie/CorfuDB/pulls{/number}","milestones_url":"https://api.github.com/repos/slfritchie/CorfuDB/milestones{/number}","notifications_url":"https://api.github.com/repos/slfritchie/CorfuDB/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/slfritchie/CorfuDB/labels{/name}","releases_url":"https://api.github.com/repos/slfritchie/CorfuDB/releases{/id}","deployments_url":"https://api.github.com/repos/slfritchie/CorfuDB/deployments","created_at":"2016-06-07T01:27:06Z","updated_at":"2016-06-08T20:31:37Z","pushed_at":"2016-10-19T20:27:17Z","git_url":"git://github.com/slfritchie/CorfuDB.git","ssh_url":"git@github.com:slfritchie/CorfuDB.git","clone_url":"https://github.com/slfritchie/CorfuDB.git","svn_url":"https://github.com/slfritchie/CorfuDB","homepage":"","size":932404,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"CorfuDB:master","ref":"master","sha":"c01079d24ae255514dbe478a7a7b30e1e1677f54","user":{"login":"CorfuDB","id":10199273,"avatar_url":"https://avatars.githubusercontent.com/u/10199273?v=3","gravatar_id":"","url":"https://api.github.com/users/CorfuDB","html_url":"https://github.com/CorfuDB","followers_url":"https://api.github.com/users/CorfuDB/followers","following_url":"https://api.github.com/users/CorfuDB/following{/other_user}","gists_url":"https://api.github.com/users/CorfuDB/gists{/gist_id}","starred_url":"https://api.github.com/users/CorfuDB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CorfuDB/subscriptions","organizations_url":"https://api.github.com/users/CorfuDB/orgs","repos_url":"https://api.github.com/users/CorfuDB/repos","events_url":"https://api.github.com/users/CorfuDB/events{/privacy}","received_events_url":"https://api.github.com/users/CorfuDB/received_events","type":"Organization","site_admin":false},"repo":{"id":12960439,"name":"CorfuDB","full_name":"CorfuDB/CorfuDB","owner":{"login":"CorfuDB","id":10199273,"avatar_url":"https://avatars.githubusercontent.com/u/10199273?v=3","gravatar_id":"","url":"https://api.github.com/users/CorfuDB","html_url":"https://github.com/CorfuDB","followers_url":"https://api.github.com/users/CorfuDB/followers","following_url":"https://api.github.com/users/CorfuDB/following{/other_user}","gists_url":"https://api.github.com/users/CorfuDB/gists{/gist_id}","starred_url":"https://api.github.com/users/CorfuDB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CorfuDB/subscriptions","organizations_url":"https://api.github.com/users/CorfuDB/orgs","repos_url":"https://api.github.com/users/CorfuDB/repos","events_url":"https://api.github.com/users/CorfuDB/events{/privacy}","received_events_url":"https://api.github.com/users/CorfuDB/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CorfuDB/CorfuDB","description":"A cluster consistency platform","fork":false,"url":"https://api.github.com/repos/CorfuDB/CorfuDB","forks_url":"https://api.github.com/repos/CorfuDB/CorfuDB/forks","keys_url":"https://api.github.com/repos/CorfuDB/CorfuDB/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CorfuDB/CorfuDB/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CorfuDB/CorfuDB/teams","hooks_url":"https://api.github.com/repos/CorfuDB/CorfuDB/hooks","issue_events_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/events{/number}","events_url":"https://api.github.com/repos/CorfuDB/CorfuDB/events","assignees_url":"https://api.github.com/repos/CorfuDB/CorfuDB/assignees{/user}","branches_url":"https://api.github.com/repos/CorfuDB/CorfuDB/branches{/branch}","tags_url":"https://api.github.com/repos/CorfuDB/CorfuDB/tags","blobs_url":"https://api.github.com/repos/CorfuDB/CorfuDB/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CorfuDB/CorfuDB/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CorfuDB/CorfuDB/git/refs{/sha}","trees_url":"https://api.github.com/repos/CorfuDB/CorfuDB/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CorfuDB/CorfuDB/statuses/{sha}","languages_url":"https://api.github.com/repos/CorfuDB/CorfuDB/languages","stargazers_url":"https://api.github.com/repos/CorfuDB/CorfuDB/stargazers","contributors_url":"https://api.github.com/repos/CorfuDB/CorfuDB/contributors","subscribers_url":"https://api.github.com/repos/CorfuDB/CorfuDB/subscribers","subscription_url":"https://api.github.com/repos/CorfuDB/CorfuDB/subscription","commits_url":"https://api.github.com/repos/CorfuDB/CorfuDB/commits{/sha}","git_commits_url":"https://api.github.com/repos/CorfuDB/CorfuDB/git/commits{/sha}","comments_url":"https://api.github.com/repos/CorfuDB/CorfuDB/comments{/number}","issue_comment_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/comments{/number}","contents_url":"https://api.github.com/repos/CorfuDB/CorfuDB/contents/{+path}","compare_url":"https://api.github.com/repos/CorfuDB/CorfuDB/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CorfuDB/CorfuDB/merges","archive_url":"https://api.github.com/repos/CorfuDB/CorfuDB/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CorfuDB/CorfuDB/downloads","issues_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues{/number}","pulls_url":"https://api.github.com/repos/CorfuDB/CorfuDB/pulls{/number}","milestones_url":"https://api.github.com/repos/CorfuDB/CorfuDB/milestones{/number}","notifications_url":"https://api.github.com/repos/CorfuDB/CorfuDB/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CorfuDB/CorfuDB/labels{/name}","releases_url":"https://api.github.com/repos/CorfuDB/CorfuDB/releases{/id}","deployments_url":"https://api.github.com/repos/CorfuDB/CorfuDB/deployments","created_at":"2013-09-19T22:02:36Z","updated_at":"2016-10-12T04:55:31Z","pushed_at":"2016-10-19T20:34:49Z","git_url":"git://github.com/CorfuDB/CorfuDB.git","ssh_url":"git@github.com:CorfuDB/CorfuDB.git","clone_url":"https://github.com/CorfuDB/CorfuDB.git","svn_url":"https://github.com/CorfuDB/CorfuDB","homepage":"","size":1925783,"stargazers_count":95,"watchers_count":95,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":24,"mirror_url":null,"open_issues_count":48,"forks":24,"open_issues":48,"watchers":95,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/CorfuDB/CorfuDB/pulls/248"},"html":{"href":"https://github.com/CorfuDB/CorfuDB/pull/248"},"issue":{"href":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/248"},"comments":{"href":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/248/comments"},"review_comments":{"href":"https://api.github.com/repos/CorfuDB/CorfuDB/pulls/248/comments"},"review_comment":{"href":"https://api.github.com/repos/CorfuDB/CorfuDB/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CorfuDB/CorfuDB/pulls/248/commits"},"statuses":{"href":"https://api.github.com/repos/CorfuDB/CorfuDB/statuses/c9b4e865de8bceea0b9f149a6e810d51f076b629"}},"merged":false,"mergeable":true,"mergeable_state":"unstable","merged_by":null,"comments":0,"review_comments":0,"commits":16,"additions":464,"deletions":4,"changed_files":7}}
{"actor":{"display_login":"slfritchie"}}