{"action":"closed","number":20221,"pull_request":{"url":"https://api.github.com/repos/saltstack/salt/pulls/20221","id":28319943,"html_url":"https://github.com/saltstack/salt/pull/20221","diff_url":"https://github.com/saltstack/salt/pull/20221.diff","patch_url":"https://github.com/saltstack/salt/pull/20221.patch","issue_url":"https://api.github.com/repos/saltstack/salt/issues/20221","number":20221,"state":"closed","locked":false,"title":"Remove finish [DO NOT MERGE]","user":{"login":"cachedout","id":111616,"avatar_url":"https://avatars.githubusercontent.com/u/111616?v=3","gravatar_id":"","url":"https://api.github.com/users/cachedout","html_url":"https://github.com/cachedout","followers_url":"https://api.github.com/users/cachedout/followers","following_url":"https://api.github.com/users/cachedout/following{/other_user}","gists_url":"https://api.github.com/users/cachedout/gists{/gist_id}","starred_url":"https://api.github.com/users/cachedout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cachedout/subscriptions","organizations_url":"https://api.github.com/users/cachedout/orgs","repos_url":"https://api.github.com/users/cachedout/repos","events_url":"https://api.github.com/users/cachedout/events{/privacy}","received_events_url":"https://api.github.com/users/cachedout/received_events","type":"User","site_admin":false},"body":"The tornado tests cause the following exception to occur:\r\n\r\n```\r\n15:10:38,847 [salttesting.unit                                    :189 ][DEBUG   ] >>>>> START >>>>> integration.netapi.rest_tornado.test_app\r\n.TestWebhookSaltAPIHandler.test_post\r\n15:10:38,847 [tornado.general                                     :117 ][WARNING ] tornado.autoreload started more than once in the same proc\r\ness\r\n15:10:38,847 [salt.config                                         :753 ][DEBUG   ] Reading configuration from /tmp/salt-tests-tmpdir/config/m\r\naster\r\n15:10:38,853 [salt.config                                         :1934][DEBUG   ] Guessing ID. The id can be explicitly in set /etc/salt/min\r\nion\r\n15:10:38,856 [salt.config                                         :1934][DEBUG   ] Guessing ID. The id can be explicitly in set /etc/salt/min\r\nion\r\n15:10:38,865 [salt.config                                         :1937][INFO    ] Found minion id from generate_minion_id(): silver\r\n15:10:38,866 [salt.config                                         :753 ][DEBUG   ] Reading configuration from /tmp/salt-tests-tmpdir/config/m\r\naster\r\n15:10:38,868 [salt.config                                         :1937][INFO    ] Found minion id from generate_minion_id(): silver\r\n15:10:38,891 [salt.config                                         :753 ][DEBUG   ] Reading configuration from /tmp/salt-tests-tmpdir/config/m\r\naster\r\n15:10:38,899 [salt.config                                         :1934][DEBUG   ] Guessing ID. The id can be explicitly in set /etc/salt/min\r\nion\r\n15:10:38,912 [salt.config                                         :1937][INFO    ] Found minion id from generate_minion_id(): silver\r\n15:10:38,912 [salt.config                                         :753 ][DEBUG   ] Reading configuration from /tmp/salt-tests-tmpdir/config/m\r\naster\r\n15:10:38,918 [salt.crypt                                          :273 ][DEBUG   ] Re-using SAuth for ('/tmp/salt-tests-tmpdir/master-minion-\r\nroot/pki', 'minion', 'tcp://127.0.0.1:54506')\r\n15:10:38,919 [salt.master                                :823 ][INFO    ] AES payload received with command _minion_event\r\n15:10:38,920 [salt.utils.event                           :485 ][DEBUG   ] Sending event - data = {'_stamp': '2015-01-29T15:10:38.919487', 'ta\r\ng': '20150129151038416727', 'data': {'_stamp': '2015-01-29T15:10:38.416900', 'minions': ['minion', 'sub_minion']}}\r\n15:10:38,920 [salt.utils.event                           :485 ][DEBUG   ] Sending event - data = {'_stamp': '2015-01-29T15:10:38.919715', 'ta\r\ng': '20150129151038416727', 'data': {'_stamp': '2015-01-29T15:10:38.416900', 'minions': ['minion', 'sub_minion']}}\r\n15:10:38,920 [salt.utils.event                           :485 ][DEBUG   ] Sending event - data = {'_stamp': '2015-01-29T15:10:38.919897', 'ta\r\ng': 'salt/job/20150129151038416727/new', 'data': {'tgt_type': 'glob', 'jid': '20150129151038416727', 'tgt': '*', '_stamp': '2015-01-29T15:10:\r\n38.417059', 'user': 'sudo_mp', 'arg': [], 'fun': 'test.ping', 'minions': ['minion', 'sub_minion']}}\r\n15:10:38,920 [salt.utils.event                           :485 ][DEBUG   ] Sending event - data = {'_stamp': '2015-01-29T15:10:38.920085', 'ta\r\ng': 'salt/job/20150129151038416727/new', 'data': {'tgt_type': 'glob', 'jid': '20150129151038416727', 'tgt': '*', '_stamp': '2015-01-29T15:10:\r\n38.417059', 'user': 'sudo_mp', 'arg': [], 'fun': 'test.ping', 'minions': ['minion', 'sub_minion']}}\r\n15:10:38,920 [salt.utils.event                           :485 ][DEBUG   ] Sending event - data = {'_stamp': '2015-01-29T15:10:38.920265', 'ta\r\ng': '20150129151038421570', 'data': {'_stamp': '2015-01-29T15:10:38.422012', 'minions': ['minion', 'sub_minion']}}\r\n15:10:38,920 [salt.utils.event                           :485 ][DEBUG   ] Sending event - data = {'_stamp': '2015-01-29T15:10:38.920442', 'ta\r\ng': '20150129151038421570', 'data': {'_stamp': '2015-01-29T15:10:38.422012', 'minions': ['minion', 'sub_minion']}}\r\n15:10:38,921 [salt.utils.event                           :485 ][DEBUG   ] Sending event - data = {'_stamp': '2015-01-29T15:10:38.920674', 'ta\r\n15:10:35,245 [tornado.application                                 :1407][ERROR   ] Uncaught exception GET /events (127.0.0.1)                                                                                                                                                                                                                                                                                                             \r\nHTTPServerRequest(protocol='http', host='localhost:34973', method='GET', uri='/events', version='HTTP/1.1', remote_ip='127.0.0.1', headers={'Connection': 'close', 'Host': 'localhost:34973', 'Accept-Encoding': 'gzip', 'X-Auth-Token': '749b00965833afb363b5db5bc26471a2'})\r\nTraceback (most recent call last):                                                                                                                                                                                                                                                                                                                                                                                                        \r\n  File \"/usr/local/lib/python2.7/dist-packages/tornado/web.py\", line 1334, in _execute                                                                                                                                                                                                                                                                                                                                                    \r\n    result = yield result                                                                                                                                                                                                                                                                                                                                                                                                                 \r\n  File \"/usr/local/lib/python2.7/dist-packages/tornado/gen.py\", line 628, in run                                                                                                                                                                                                                                                                                                                                                          \r\n    value = future.result()                                                                                                                                                                                                                                                                                                                                                                                                               \r\n  File \"/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py\", line 109, in result                                                                                                                                                                                                                                                                                                                                                \r\n    raise_exc_info(self._exc_info)                                                                                                                                                                                                                                                                                                                                                                                                        \r\n  File \"/usr/local/lib/python2.7/dist-packages/tornado/gen.py\", line 631, in run                                                                                                                                                                                                                                                                                                                                                          \r\n    yielded = self.gen.throw(*sys.exc_info())                                                                                                                                                                                                                                                                                                                                                                                             \r\n  File \"/home/mp/Devel/salt/salt/netapi/rest_tornado/saltnado.py\", line 1373, in get                                                                                                                                                                                                                                                                                                                                                      \r\n    self.finish()                                                                                                                                                                                                                                                                                                                                                                                                                         \r\n  File \"/usr/local/lib/python2.7/dist-packages/tornado/web.py\", line 864, in finish                                                                                                                                                                                                                                                                                                                                                       \r\n    raise RuntimeError(\"finish() called twice.  May be caused \"                                                                                                                                                                                                                                                                                                                                                                           \r\nRuntimeError: finish() called twice.  May be caused by using async operations without the @asynchronous decorator.                                                                                                                                                                                                                                                                                                                        \r\n15:10:35,246 [salttesting.unit                                    :195 ][DEBUG   ] <<<<< END <<<<<<< integration.netapi.rest_tornado.test_app.TestEventsSaltAPIHandler.test_get           \r\n```\r\n\r\nI have *no* experience with Tornado, so I am hoping that @jacksontj might have a moment to investigate this. Removing the ``self.finsh()`` does seem to resolve the problem, but I really have no idea what negative affect this might have on Tornado. :]\r\n\r\nWhen this failure occurs under machines with ZeroMQ 3.x, it seems to be related to MWorker procs actually aborting and then the test suite failing to continue. I am still investigating the root cause there but would like to get this fixed along the way.\r\n\r\n@jacksontj Any thoughts that you might have here would be much appreciated!\r\n","created_at":"2015-01-29T22:14:33Z","updated_at":"2015-01-30T02:04:12Z","closed_at":"2015-01-30T02:04:12Z","merged_at":null,"merge_commit_sha":"a18c109c751efc0f82c5ab298150eed50ab5e056","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/saltstack/salt/pulls/20221/commits","review_comments_url":"https://api.github.com/repos/saltstack/salt/pulls/20221/comments","review_comment_url":"https://api.github.com/repos/saltstack/salt/pulls/comments/{number}","comments_url":"https://api.github.com/repos/saltstack/salt/issues/20221/comments","statuses_url":"https://api.github.com/repos/saltstack/salt/statuses/208c1dc01be7cada91a82ba050795020f357c83a","head":{"label":"cachedout:remove_finish","ref":"remove_finish","sha":"208c1dc01be7cada91a82ba050795020f357c83a","user":{"login":"cachedout","id":111616,"avatar_url":"https://avatars.githubusercontent.com/u/111616?v=3","gravatar_id":"","url":"https://api.github.com/users/cachedout","html_url":"https://github.com/cachedout","followers_url":"https://api.github.com/users/cachedout/followers","following_url":"https://api.github.com/users/cachedout/following{/other_user}","gists_url":"https://api.github.com/users/cachedout/gists{/gist_id}","starred_url":"https://api.github.com/users/cachedout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cachedout/subscriptions","organizations_url":"https://api.github.com/users/cachedout/orgs","repos_url":"https://api.github.com/users/cachedout/repos","events_url":"https://api.github.com/users/cachedout/events{/privacy}","received_events_url":"https://api.github.com/users/cachedout/received_events","type":"User","site_admin":false},"repo":{"id":13233022,"name":"salt","full_name":"cachedout/salt","owner":{"login":"cachedout","id":111616,"avatar_url":"https://avatars.githubusercontent.com/u/111616?v=3","gravatar_id":"","url":"https://api.github.com/users/cachedout","html_url":"https://github.com/cachedout","followers_url":"https://api.github.com/users/cachedout/followers","following_url":"https://api.github.com/users/cachedout/following{/other_user}","gists_url":"https://api.github.com/users/cachedout/gists{/gist_id}","starred_url":"https://api.github.com/users/cachedout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cachedout/subscriptions","organizations_url":"https://api.github.com/users/cachedout/orgs","repos_url":"https://api.github.com/users/cachedout/repos","events_url":"https://api.github.com/users/cachedout/events{/privacy}","received_events_url":"https://api.github.com/users/cachedout/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cachedout/salt","description":"Central system and configuration manager ","fork":true,"url":"https://api.github.com/repos/cachedout/salt","forks_url":"https://api.github.com/repos/cachedout/salt/forks","keys_url":"https://api.github.com/repos/cachedout/salt/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cachedout/salt/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cachedout/salt/teams","hooks_url":"https://api.github.com/repos/cachedout/salt/hooks","issue_events_url":"https://api.github.com/repos/cachedout/salt/issues/events{/number}","events_url":"https://api.github.com/repos/cachedout/salt/events","assignees_url":"https://api.github.com/repos/cachedout/salt/assignees{/user}","branches_url":"https://api.github.com/repos/cachedout/salt/branches{/branch}","tags_url":"https://api.github.com/repos/cachedout/salt/tags","blobs_url":"https://api.github.com/repos/cachedout/salt/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cachedout/salt/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cachedout/salt/git/refs{/sha}","trees_url":"https://api.github.com/repos/cachedout/salt/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cachedout/salt/statuses/{sha}","languages_url":"https://api.github.com/repos/cachedout/salt/languages","stargazers_url":"https://api.github.com/repos/cachedout/salt/stargazers","contributors_url":"https://api.github.com/repos/cachedout/salt/contributors","subscribers_url":"https://api.github.com/repos/cachedout/salt/subscribers","subscription_url":"https://api.github.com/repos/cachedout/salt/subscription","commits_url":"https://api.github.com/repos/cachedout/salt/commits{/sha}","git_commits_url":"https://api.github.com/repos/cachedout/salt/git/commits{/sha}","comments_url":"https://api.github.com/repos/cachedout/salt/comments{/number}","issue_comment_url":"https://api.github.com/repos/cachedout/salt/issues/comments/{number}","contents_url":"https://api.github.com/repos/cachedout/salt/contents/{+path}","compare_url":"https://api.github.com/repos/cachedout/salt/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cachedout/salt/merges","archive_url":"https://api.github.com/repos/cachedout/salt/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cachedout/salt/downloads","issues_url":"https://api.github.com/repos/cachedout/salt/issues{/number}","pulls_url":"https://api.github.com/repos/cachedout/salt/pulls{/number}","milestones_url":"https://api.github.com/repos/cachedout/salt/milestones{/number}","notifications_url":"https://api.github.com/repos/cachedout/salt/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cachedout/salt/labels{/name}","releases_url":"https://api.github.com/repos/cachedout/salt/releases{/id}","created_at":"2013-10-01T02:32:42Z","updated_at":"2015-01-07T05:47:18Z","pushed_at":"2015-01-29T22:07:41Z","git_url":"git://github.com/cachedout/salt.git","ssh_url":"git@github.com:cachedout/salt.git","clone_url":"https://github.com/cachedout/salt.git","svn_url":"https://github.com/cachedout/salt","homepage":"saltstack.org","size":84152,"stargazers_count":0,"watchers_count":0,"language":"Python","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":0,"default_branch":"develop"}},"base":{"label":"saltstack:develop","ref":"develop","sha":"fcec870e3676f3e3f466a7161af8100ecc6cddaa","user":{"login":"saltstack","id":1147473,"avatar_url":"https://avatars.githubusercontent.com/u/1147473?v=3","gravatar_id":"","url":"https://api.github.com/users/saltstack","html_url":"https://github.com/saltstack","followers_url":"https://api.github.com/users/saltstack/followers","following_url":"https://api.github.com/users/saltstack/following{/other_user}","gists_url":"https://api.github.com/users/saltstack/gists{/gist_id}","starred_url":"https://api.github.com/users/saltstack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/saltstack/subscriptions","organizations_url":"https://api.github.com/users/saltstack/orgs","repos_url":"https://api.github.com/users/saltstack/repos","events_url":"https://api.github.com/users/saltstack/events{/privacy}","received_events_url":"https://api.github.com/users/saltstack/received_events","type":"Organization","site_admin":false},"repo":{"id":1390248,"name":"salt","full_name":"saltstack/salt","owner":{"login":"saltstack","id":1147473,"avatar_url":"https://avatars.githubusercontent.com/u/1147473?v=3","gravatar_id":"","url":"https://api.github.com/users/saltstack","html_url":"https://github.com/saltstack","followers_url":"https://api.github.com/users/saltstack/followers","following_url":"https://api.github.com/users/saltstack/following{/other_user}","gists_url":"https://api.github.com/users/saltstack/gists{/gist_id}","starred_url":"https://api.github.com/users/saltstack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/saltstack/subscriptions","organizations_url":"https://api.github.com/users/saltstack/orgs","repos_url":"https://api.github.com/users/saltstack/repos","events_url":"https://api.github.com/users/saltstack/events{/privacy}","received_events_url":"https://api.github.com/users/saltstack/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/saltstack/salt","description":"Infrastructure automation and management system","fork":false,"url":"https://api.github.com/repos/saltstack/salt","forks_url":"https://api.github.com/repos/saltstack/salt/forks","keys_url":"https://api.github.com/repos/saltstack/salt/keys{/key_id}","collaborators_url":"https://api.github.com/repos/saltstack/salt/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/saltstack/salt/teams","hooks_url":"https://api.github.com/repos/saltstack/salt/hooks","issue_events_url":"https://api.github.com/repos/saltstack/salt/issues/events{/number}","events_url":"https://api.github.com/repos/saltstack/salt/events","assignees_url":"https://api.github.com/repos/saltstack/salt/assignees{/user}","branches_url":"https://api.github.com/repos/saltstack/salt/branches{/branch}","tags_url":"https://api.github.com/repos/saltstack/salt/tags","blobs_url":"https://api.github.com/repos/saltstack/salt/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/saltstack/salt/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/saltstack/salt/git/refs{/sha}","trees_url":"https://api.github.com/repos/saltstack/salt/git/trees{/sha}","statuses_url":"https://api.github.com/repos/saltstack/salt/statuses/{sha}","languages_url":"https://api.github.com/repos/saltstack/salt/languages","stargazers_url":"https://api.github.com/repos/saltstack/salt/stargazers","contributors_url":"https://api.github.com/repos/saltstack/salt/contributors","subscribers_url":"https://api.github.com/repos/saltstack/salt/subscribers","subscription_url":"https://api.github.com/repos/saltstack/salt/subscription","commits_url":"https://api.github.com/repos/saltstack/salt/commits{/sha}","git_commits_url":"https://api.github.com/repos/saltstack/salt/git/commits{/sha}","comments_url":"https://api.github.com/repos/saltstack/salt/comments{/number}","issue_comment_url":"https://api.github.com/repos/saltstack/salt/issues/comments/{number}","contents_url":"https://api.github.com/repos/saltstack/salt/contents/{+path}","compare_url":"https://api.github.com/repos/saltstack/salt/compare/{base}...{head}","merges_url":"https://api.github.com/repos/saltstack/salt/merges","archive_url":"https://api.github.com/repos/saltstack/salt/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/saltstack/salt/downloads","issues_url":"https://api.github.com/repos/saltstack/salt/issues{/number}","pulls_url":"https://api.github.com/repos/saltstack/salt/pulls{/number}","milestones_url":"https://api.github.com/repos/saltstack/salt/milestones{/number}","notifications_url":"https://api.github.com/repos/saltstack/salt/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/saltstack/salt/labels{/name}","releases_url":"https://api.github.com/repos/saltstack/salt/releases{/id}","created_at":"2011-02-20T20:16:56Z","updated_at":"2015-01-29T21:47:36Z","pushed_at":"2015-01-29T23:37:11Z","git_url":"git://github.com/saltstack/salt.git","ssh_url":"git@github.com:saltstack/salt.git","clone_url":"https://github.com/saltstack/salt.git","svn_url":"https://github.com/saltstack/salt","homepage":"saltstack.com","size":173884,"stargazers_count":4623,"watchers_count":4623,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1908,"mirror_url":null,"open_issues_count":2171,"forks":1908,"open_issues":2171,"watchers":4623,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/saltstack/salt/pulls/20221"},"html":{"href":"https://github.com/saltstack/salt/pull/20221"},"issue":{"href":"https://api.github.com/repos/saltstack/salt/issues/20221"},"comments":{"href":"https://api.github.com/repos/saltstack/salt/issues/20221/comments"},"review_comments":{"href":"https://api.github.com/repos/saltstack/salt/pulls/20221/comments"},"review_comment":{"href":"https://api.github.com/repos/saltstack/salt/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/saltstack/salt/pulls/20221/commits"},"statuses":{"href":"https://api.github.com/repos/saltstack/salt/statuses/208c1dc01be7cada91a82ba050795020f357c83a"}},"merged":false,"mergeable":true,"mergeable_state":"clean","merged_by":null,"comments":5,"review_comments":0,"commits":1,"additions":1,"deletions":1,"changed_files":1}}