{"action":"created","comment":{"url":"https://api.github.com/repos/magfest/ubersystem/pulls/comments/31396250","id":31396250,"diff_hunk":"@@ -1,4 +1,5 @@\n from uber.common import *\n+from sideboard.lib import stopped, on_startup","path":"uber/models.py","position":2,"original_position":2,"commit_id":"78bf82367d516461810d7a905fcf4c469231ef10","original_commit_id":"78bf82367d516461810d7a905fcf4c469231ef10","user":{"login":"EliAndrewC","id":651592,"avatar_url":"https://avatars.githubusercontent.com/u/651592?v=3","gravatar_id":"","url":"https://api.github.com/users/EliAndrewC","html_url":"https://github.com/EliAndrewC","followers_url":"https://api.github.com/users/EliAndrewC/followers","following_url":"https://api.github.com/users/EliAndrewC/following{/other_user}","gists_url":"https://api.github.com/users/EliAndrewC/gists{/gist_id}","starred_url":"https://api.github.com/users/EliAndrewC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EliAndrewC/subscriptions","organizations_url":"https://api.github.com/users/EliAndrewC/orgs","repos_url":"https://api.github.com/users/EliAndrewC/repos","events_url":"https://api.github.com/users/EliAndrewC/events{/privacy}","received_events_url":"https://api.github.com/users/EliAndrewC/received_events","type":"User","site_admin":false},"body":"By convention, we put all of our imports in ``common.py`` - unless the decision is made to stop doing that, this import should be moved there.","created_at":"2015-06-01T00:30:55Z","updated_at":"2015-06-01T00:30:55Z","html_url":"https://github.com/magfest/ubersystem/pull/1127#discussion_r31396250","pull_request_url":"https://api.github.com/repos/magfest/ubersystem/pulls/1127","_links":{"self":{"href":"https://api.github.com/repos/magfest/ubersystem/pulls/comments/31396250"},"html":{"href":"https://github.com/magfest/ubersystem/pull/1127#discussion_r31396250"},"pull_request":{"href":"https://api.github.com/repos/magfest/ubersystem/pulls/1127"}}},"pull_request":{"url":"https://api.github.com/repos/magfest/ubersystem/pulls/1127","id":36588467,"html_url":"https://github.com/magfest/ubersystem/pull/1127","diff_url":"https://github.com/magfest/ubersystem/pull/1127.diff","patch_url":"https://github.com/magfest/ubersystem/pull/1127.patch","issue_url":"https://api.github.com/repos/magfest/ubersystem/issues/1127","number":1127,"state":"open","locked":false,"title":"initialize_db() now happens on post-init, ignore any other times it's called","user":{"login":"binary1230","id":5413064,"avatar_url":"https://avatars.githubusercontent.com/u/5413064?v=3","gravatar_id":"","url":"https://api.github.com/users/binary1230","html_url":"https://github.com/binary1230","followers_url":"https://api.github.com/users/binary1230/followers","following_url":"https://api.github.com/users/binary1230/following{/other_user}","gists_url":"https://api.github.com/users/binary1230/gists{/gist_id}","starred_url":"https://api.github.com/users/binary1230/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/binary1230/subscriptions","organizations_url":"https://api.github.com/users/binary1230/orgs","repos_url":"https://api.github.com/users/binary1230/repos","events_url":"https://api.github.com/users/binary1230/events{/privacy}","received_events_url":"https://api.github.com/users/binary1230/received_events","type":"User","site_admin":false},"body":"per Eli's suggestion\r\n\r\n1) initialize the DB in a task that runs only on actual startup after all classes have registered themselves.  any other calls that omit modify_tables=True are basically ignored.\r\n\r\n2) this also tries to initialize the DB, and if it fails, retries 10 times with a 5 second delay, to deal with the database not being ready to accept connections (this happens with docker containers starting up for the first time, and out of order)\r\n\r\n--\r\n\r\nThese changes accomplish the following:\r\n1) Fixes broken behavior where ubersystem didn't create all it's DB tables at startup automatically\r\n2) Makes this startup in our current docker setup where uber tries to connect to the DB before the DB is ready to accept connections\r\n\r\nNEED TO TEST STILL on existing deployments but should be OK.\r\n\r\nProbably should remove Session.initialize_db() from magstock plugins, and any other plugins where that's being used.\r\n\r\n@EliAndrewC check on this for me, this change makes it so the following two things in SessionManager don't happen until much later in the startup process (from SessionManager.initialize_db()):\r\n\r\n```\r\nconfigure_mappers()\r\ncls.BaseClass.metadata.bind = cls.engine\r\n```","created_at":"2015-05-31T20:13:17Z","updated_at":"2015-06-01T00:30:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"14e94351911389c5b60fed4f102d93cfd66ca91a","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/magfest/ubersystem/pulls/1127/commits","review_comments_url":"https://api.github.com/repos/magfest/ubersystem/pulls/1127/comments","review_comment_url":"https://api.github.com/repos/magfest/ubersystem/pulls/comments{/number}","comments_url":"https://api.github.com/repos/magfest/ubersystem/issues/1127/comments","statuses_url":"https://api.github.com/repos/magfest/ubersystem/statuses/78bf82367d516461810d7a905fcf4c469231ef10","head":{"label":"magfest:docker-db-fix","ref":"docker-db-fix","sha":"78bf82367d516461810d7a905fcf4c469231ef10","user":{"login":"magfest","id":7840140,"avatar_url":"https://avatars.githubusercontent.com/u/7840140?v=3","gravatar_id":"","url":"https://api.github.com/users/magfest","html_url":"https://github.com/magfest","followers_url":"https://api.github.com/users/magfest/followers","following_url":"https://api.github.com/users/magfest/following{/other_user}","gists_url":"https://api.github.com/users/magfest/gists{/gist_id}","starred_url":"https://api.github.com/users/magfest/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/magfest/subscriptions","organizations_url":"https://api.github.com/users/magfest/orgs","repos_url":"https://api.github.com/users/magfest/repos","events_url":"https://api.github.com/users/magfest/events{/privacy}","received_events_url":"https://api.github.com/users/magfest/received_events","type":"Organization","site_admin":false},"repo":{"id":16427229,"name":"ubersystem","full_name":"magfest/ubersystem","owner":{"login":"magfest","id":7840140,"avatar_url":"https://avatars.githubusercontent.com/u/7840140?v=3","gravatar_id":"","url":"https://api.github.com/users/magfest","html_url":"https://github.com/magfest","followers_url":"https://api.github.com/users/magfest/followers","following_url":"https://api.github.com/users/magfest/following{/other_user}","gists_url":"https://api.github.com/users/magfest/gists{/gist_id}","starred_url":"https://api.github.com/users/magfest/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/magfest/subscriptions","organizations_url":"https://api.github.com/users/magfest/orgs","repos_url":"https://api.github.com/users/magfest/repos","events_url":"https://api.github.com/users/magfest/events{/privacy}","received_events_url":"https://api.github.com/users/magfest/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/magfest/ubersystem","description":"MAGFest's Ubersystem - handles ticketing, staffing, analytics, volunteers, and tons more","fork":false,"url":"https://api.github.com/repos/magfest/ubersystem","forks_url":"https://api.github.com/repos/magfest/ubersystem/forks","keys_url":"https://api.github.com/repos/magfest/ubersystem/keys{/key_id}","collaborators_url":"https://api.github.com/repos/magfest/ubersystem/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/magfest/ubersystem/teams","hooks_url":"https://api.github.com/repos/magfest/ubersystem/hooks","issue_events_url":"https://api.github.com/repos/magfest/ubersystem/issues/events{/number}","events_url":"https://api.github.com/repos/magfest/ubersystem/events","assignees_url":"https://api.github.com/repos/magfest/ubersystem/assignees{/user}","branches_url":"https://api.github.com/repos/magfest/ubersystem/branches{/branch}","tags_url":"https://api.github.com/repos/magfest/ubersystem/tags","blobs_url":"https://api.github.com/repos/magfest/ubersystem/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/magfest/ubersystem/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/magfest/ubersystem/git/refs{/sha}","trees_url":"https://api.github.com/repos/magfest/ubersystem/git/trees{/sha}","statuses_url":"https://api.github.com/repos/magfest/ubersystem/statuses/{sha}","languages_url":"https://api.github.com/repos/magfest/ubersystem/languages","stargazers_url":"https://api.github.com/repos/magfest/ubersystem/stargazers","contributors_url":"https://api.github.com/repos/magfest/ubersystem/contributors","subscribers_url":"https://api.github.com/repos/magfest/ubersystem/subscribers","subscription_url":"https://api.github.com/repos/magfest/ubersystem/subscription","commits_url":"https://api.github.com/repos/magfest/ubersystem/commits{/sha}","git_commits_url":"https://api.github.com/repos/magfest/ubersystem/git/commits{/sha}","comments_url":"https://api.github.com/repos/magfest/ubersystem/comments{/number}","issue_comment_url":"https://api.github.com/repos/magfest/ubersystem/issues/comments{/number}","contents_url":"https://api.github.com/repos/magfest/ubersystem/contents/{+path}","compare_url":"https://api.github.com/repos/magfest/ubersystem/compare/{base}...{head}","merges_url":"https://api.github.com/repos/magfest/ubersystem/merges","archive_url":"https://api.github.com/repos/magfest/ubersystem/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/magfest/ubersystem/downloads","issues_url":"https://api.github.com/repos/magfest/ubersystem/issues{/number}","pulls_url":"https://api.github.com/repos/magfest/ubersystem/pulls{/number}","milestones_url":"https://api.github.com/repos/magfest/ubersystem/milestones{/number}","notifications_url":"https://api.github.com/repos/magfest/ubersystem/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/magfest/ubersystem/labels{/name}","releases_url":"https://api.github.com/repos/magfest/ubersystem/releases{/id}","created_at":"2014-02-01T02:56:25Z","updated_at":"2015-05-27T19:50:37Z","pushed_at":"2015-05-31T21:07:26Z","git_url":"git://github.com/magfest/ubersystem.git","ssh_url":"git@github.com:magfest/ubersystem.git","clone_url":"https://github.com/magfest/ubersystem.git","svn_url":"https://github.com/magfest/ubersystem","homepage":"http://magfest.org","size":66424,"stargazers_count":17,"watchers_count":17,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":19,"mirror_url":null,"open_issues_count":189,"forks":19,"open_issues":189,"watchers":17,"default_branch":"master"}},"base":{"label":"magfest:master","ref":"master","sha":"a0337aac6074ecd8117aa951d46f20025a028151","user":{"login":"magfest","id":7840140,"avatar_url":"https://avatars.githubusercontent.com/u/7840140?v=3","gravatar_id":"","url":"https://api.github.com/users/magfest","html_url":"https://github.com/magfest","followers_url":"https://api.github.com/users/magfest/followers","following_url":"https://api.github.com/users/magfest/following{/other_user}","gists_url":"https://api.github.com/users/magfest/gists{/gist_id}","starred_url":"https://api.github.com/users/magfest/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/magfest/subscriptions","organizations_url":"https://api.github.com/users/magfest/orgs","repos_url":"https://api.github.com/users/magfest/repos","events_url":"https://api.github.com/users/magfest/events{/privacy}","received_events_url":"https://api.github.com/users/magfest/received_events","type":"Organization","site_admin":false},"repo":{"id":16427229,"name":"ubersystem","full_name":"magfest/ubersystem","owner":{"login":"magfest","id":7840140,"avatar_url":"https://avatars.githubusercontent.com/u/7840140?v=3","gravatar_id":"","url":"https://api.github.com/users/magfest","html_url":"https://github.com/magfest","followers_url":"https://api.github.com/users/magfest/followers","following_url":"https://api.github.com/users/magfest/following{/other_user}","gists_url":"https://api.github.com/users/magfest/gists{/gist_id}","starred_url":"https://api.github.com/users/magfest/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/magfest/subscriptions","organizations_url":"https://api.github.com/users/magfest/orgs","repos_url":"https://api.github.com/users/magfest/repos","events_url":"https://api.github.com/users/magfest/events{/privacy}","received_events_url":"https://api.github.com/users/magfest/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/magfest/ubersystem","description":"MAGFest's Ubersystem - handles ticketing, staffing, analytics, volunteers, and tons more","fork":false,"url":"https://api.github.com/repos/magfest/ubersystem","forks_url":"https://api.github.com/repos/magfest/ubersystem/forks","keys_url":"https://api.github.com/repos/magfest/ubersystem/keys{/key_id}","collaborators_url":"https://api.github.com/repos/magfest/ubersystem/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/magfest/ubersystem/teams","hooks_url":"https://api.github.com/repos/magfest/ubersystem/hooks","issue_events_url":"https://api.github.com/repos/magfest/ubersystem/issues/events{/number}","events_url":"https://api.github.com/repos/magfest/ubersystem/events","assignees_url":"https://api.github.com/repos/magfest/ubersystem/assignees{/user}","branches_url":"https://api.github.com/repos/magfest/ubersystem/branches{/branch}","tags_url":"https://api.github.com/repos/magfest/ubersystem/tags","blobs_url":"https://api.github.com/repos/magfest/ubersystem/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/magfest/ubersystem/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/magfest/ubersystem/git/refs{/sha}","trees_url":"https://api.github.com/repos/magfest/ubersystem/git/trees{/sha}","statuses_url":"https://api.github.com/repos/magfest/ubersystem/statuses/{sha}","languages_url":"https://api.github.com/repos/magfest/ubersystem/languages","stargazers_url":"https://api.github.com/repos/magfest/ubersystem/stargazers","contributors_url":"https://api.github.com/repos/magfest/ubersystem/contributors","subscribers_url":"https://api.github.com/repos/magfest/ubersystem/subscribers","subscription_url":"https://api.github.com/repos/magfest/ubersystem/subscription","commits_url":"https://api.github.com/repos/magfest/ubersystem/commits{/sha}","git_commits_url":"https://api.github.com/repos/magfest/ubersystem/git/commits{/sha}","comments_url":"https://api.github.com/repos/magfest/ubersystem/comments{/number}","issue_comment_url":"https://api.github.com/repos/magfest/ubersystem/issues/comments{/number}","contents_url":"https://api.github.com/repos/magfest/ubersystem/contents/{+path}","compare_url":"https://api.github.com/repos/magfest/ubersystem/compare/{base}...{head}","merges_url":"https://api.github.com/repos/magfest/ubersystem/merges","archive_url":"https://api.github.com/repos/magfest/ubersystem/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/magfest/ubersystem/downloads","issues_url":"https://api.github.com/repos/magfest/ubersystem/issues{/number}","pulls_url":"https://api.github.com/repos/magfest/ubersystem/pulls{/number}","milestones_url":"https://api.github.com/repos/magfest/ubersystem/milestones{/number}","notifications_url":"https://api.github.com/repos/magfest/ubersystem/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/magfest/ubersystem/labels{/name}","releases_url":"https://api.github.com/repos/magfest/ubersystem/releases{/id}","created_at":"2014-02-01T02:56:25Z","updated_at":"2015-05-27T19:50:37Z","pushed_at":"2015-05-31T21:07:26Z","git_url":"git://github.com/magfest/ubersystem.git","ssh_url":"git@github.com:magfest/ubersystem.git","clone_url":"https://github.com/magfest/ubersystem.git","svn_url":"https://github.com/magfest/ubersystem","homepage":"http://magfest.org","size":66424,"stargazers_count":17,"watchers_count":17,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":19,"mirror_url":null,"open_issues_count":189,"forks":19,"open_issues":189,"watchers":17,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/magfest/ubersystem/pulls/1127"},"html":{"href":"https://github.com/magfest/ubersystem/pull/1127"},"issue":{"href":"https://api.github.com/repos/magfest/ubersystem/issues/1127"},"comments":{"href":"https://api.github.com/repos/magfest/ubersystem/issues/1127/comments"},"review_comments":{"href":"https://api.github.com/repos/magfest/ubersystem/pulls/1127/comments"},"review_comment":{"href":"https://api.github.com/repos/magfest/ubersystem/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/magfest/ubersystem/pulls/1127/commits"},"statuses":{"href":"https://api.github.com/repos/magfest/ubersystem/statuses/78bf82367d516461810d7a905fcf4c469231ef10"}}}}