{"action":"created","comment":{"url":"https://api.github.com/repos/Wikia/app/pulls/comments/38005784","id":38005784,"diff_hunk":"@@ -4953,6 +4915,46 @@ protected function loadOptions() {\n \t\twfRunHooks( 'UserLoadOptions', array( $this, &$this->mOptions ) );\n \t}\n \n+\tprivate function loadAttributes() {\n+\t\tglobal $wgEnableReadsFromAttributeService;\n+\n+\t\tif ( !empty( $wgEnableReadsFromAttributeService ) ) {\n+\t\t\t$attributes = $this->userAttributes()->getAttributes($this->getId());","path":"includes/User.php","position":130,"original_position":106,"commit_id":"73d366ad55770eccce58a27cb5ab6860c208bd9b","original_commit_id":"0363140e690784ed822ebc808968368a4aafdad6","user":{"login":"jsutterfield","id":1657792,"avatar_url":"https://avatars.githubusercontent.com/u/1657792?v=3","gravatar_id":"","url":"https://api.github.com/users/jsutterfield","html_url":"https://github.com/jsutterfield","followers_url":"https://api.github.com/users/jsutterfield/followers","following_url":"https://api.github.com/users/jsutterfield/following{/other_user}","gists_url":"https://api.github.com/users/jsutterfield/gists{/gist_id}","starred_url":"https://api.github.com/users/jsutterfield/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsutterfield/subscriptions","organizations_url":"https://api.github.com/users/jsutterfield/orgs","repos_url":"https://api.github.com/users/jsutterfield/repos","events_url":"https://api.github.com/users/jsutterfield/events{/privacy}","received_events_url":"https://api.github.com/users/jsutterfield/received_events","type":"User","site_admin":false},"body":"Updated :) https://github.com/Wikia/app/commit/73d366ad55770eccce58a27cb5ab6860c208bd9b","created_at":"2015-08-26T16:54:09Z","updated_at":"2015-08-26T16:54:09Z","html_url":"https://github.com/Wikia/app/pull/8216#discussion_r38005784","pull_request_url":"https://api.github.com/repos/Wikia/app/pulls/8216","_links":{"self":{"href":"https://api.github.com/repos/Wikia/app/pulls/comments/38005784"},"html":{"href":"https://github.com/Wikia/app/pull/8216#discussion_r38005784"},"pull_request":{"href":"https://api.github.com/repos/Wikia/app/pulls/8216"}}},"pull_request":{"url":"https://api.github.com/repos/Wikia/app/pulls/8216","id":43373905,"html_url":"https://github.com/Wikia/app/pull/8216","diff_url":"https://github.com/Wikia/app/pull/8216.diff","patch_url":"https://github.com/Wikia/app/pull/8216.patch","issue_url":"https://api.github.com/repos/Wikia/app/issues/8216","number":8216,"state":"open","locked":false,"title":"SOC-1201 Pull logic out of MediaWiki's attribute service client","user":{"login":"jsutterfield","id":1657792,"avatar_url":"https://avatars.githubusercontent.com/u/1657792?v=3","gravatar_id":"","url":"https://api.github.com/users/jsutterfield","html_url":"https://github.com/jsutterfield","followers_url":"https://api.github.com/users/jsutterfield/followers","following_url":"https://api.github.com/users/jsutterfield/following{/other_user}","gists_url":"https://api.github.com/users/jsutterfield/gists{/gist_id}","starred_url":"https://api.github.com/users/jsutterfield/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsutterfield/subscriptions","organizations_url":"https://api.github.com/users/jsutterfield/orgs","repos_url":"https://api.github.com/users/jsutterfield/repos","events_url":"https://api.github.com/users/jsutterfield/events{/privacy}","received_events_url":"https://api.github.com/users/jsutterfield/received_events","type":"User","site_admin":false},"body":"After turning on shadow mode for the user attribute service, it looks like attributes aren't being saved/deleted from the service properly.\r\n\r\nThe approach we were taking before was to save attributes to the service as soon as a call to `User::saveGlobalAttribute()` was made. This required some additional logic and assumptions to be made since MW doesn't actually persist attributes until `User::saveOptions()` is called. It seems that by saving those attributes in the service early we were missing some additional logic later on which changes the value or bails out of saving that attribute. That would explain why we we're see discrepancies between the `wikicities.user_properties` table used by MW and the `userattributes.user_attribute` table used by the service.\r\n\r\nThis ticket then updates the approach so that we wait until `User::saveOptions()` to save the attributes in the service, allowing MW to do all it's additional magic before finally persisting the attribute.\r\n\r\nTicket: https://wikia-inc.atlassian.net/browse/SOC-1201","created_at":"2015-08-26T07:57:44Z","updated_at":"2015-08-26T16:54:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"dc18a07f13fa5284d7c3cac9f63f5b26e0919ae4","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Wikia/app/pulls/8216/commits","review_comments_url":"https://api.github.com/repos/Wikia/app/pulls/8216/comments","review_comment_url":"https://api.github.com/repos/Wikia/app/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Wikia/app/issues/8216/comments","statuses_url":"https://api.github.com/repos/Wikia/app/statuses/73d366ad55770eccce58a27cb5ab6860c208bd9b","head":{"label":"Wikia:SOC-1201","ref":"SOC-1201","sha":"73d366ad55770eccce58a27cb5ab6860c208bd9b","user":{"login":"Wikia","id":1171011,"avatar_url":"https://avatars.githubusercontent.com/u/1171011?v=3","gravatar_id":"","url":"https://api.github.com/users/Wikia","html_url":"https://github.com/Wikia","followers_url":"https://api.github.com/users/Wikia/followers","following_url":"https://api.github.com/users/Wikia/following{/other_user}","gists_url":"https://api.github.com/users/Wikia/gists{/gist_id}","starred_url":"https://api.github.com/users/Wikia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Wikia/subscriptions","organizations_url":"https://api.github.com/users/Wikia/orgs","repos_url":"https://api.github.com/users/Wikia/repos","events_url":"https://api.github.com/users/Wikia/events{/privacy}","received_events_url":"https://api.github.com/users/Wikia/received_events","type":"Organization","site_admin":false},"repo":{"id":5532313,"name":"app","full_name":"Wikia/app","owner":{"login":"Wikia","id":1171011,"avatar_url":"https://avatars.githubusercontent.com/u/1171011?v=3","gravatar_id":"","url":"https://api.github.com/users/Wikia","html_url":"https://github.com/Wikia","followers_url":"https://api.github.com/users/Wikia/followers","following_url":"https://api.github.com/users/Wikia/following{/other_user}","gists_url":"https://api.github.com/users/Wikia/gists{/gist_id}","starred_url":"https://api.github.com/users/Wikia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Wikia/subscriptions","organizations_url":"https://api.github.com/users/Wikia/orgs","repos_url":"https://api.github.com/users/Wikia/repos","events_url":"https://api.github.com/users/Wikia/events{/privacy}","received_events_url":"https://api.github.com/users/Wikia/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Wikia/app","description":"Wikia Application Code","fork":false,"url":"https://api.github.com/repos/Wikia/app","forks_url":"https://api.github.com/repos/Wikia/app/forks","keys_url":"https://api.github.com/repos/Wikia/app/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Wikia/app/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Wikia/app/teams","hooks_url":"https://api.github.com/repos/Wikia/app/hooks","issue_events_url":"https://api.github.com/repos/Wikia/app/issues/events{/number}","events_url":"https://api.github.com/repos/Wikia/app/events","assignees_url":"https://api.github.com/repos/Wikia/app/assignees{/user}","branches_url":"https://api.github.com/repos/Wikia/app/branches{/branch}","tags_url":"https://api.github.com/repos/Wikia/app/tags","blobs_url":"https://api.github.com/repos/Wikia/app/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Wikia/app/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Wikia/app/git/refs{/sha}","trees_url":"https://api.github.com/repos/Wikia/app/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Wikia/app/statuses/{sha}","languages_url":"https://api.github.com/repos/Wikia/app/languages","stargazers_url":"https://api.github.com/repos/Wikia/app/stargazers","contributors_url":"https://api.github.com/repos/Wikia/app/contributors","subscribers_url":"https://api.github.com/repos/Wikia/app/subscribers","subscription_url":"https://api.github.com/repos/Wikia/app/subscription","commits_url":"https://api.github.com/repos/Wikia/app/commits{/sha}","git_commits_url":"https://api.github.com/repos/Wikia/app/git/commits{/sha}","comments_url":"https://api.github.com/repos/Wikia/app/comments{/number}","issue_comment_url":"https://api.github.com/repos/Wikia/app/issues/comments{/number}","contents_url":"https://api.github.com/repos/Wikia/app/contents/{+path}","compare_url":"https://api.github.com/repos/Wikia/app/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Wikia/app/merges","archive_url":"https://api.github.com/repos/Wikia/app/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Wikia/app/downloads","issues_url":"https://api.github.com/repos/Wikia/app/issues{/number}","pulls_url":"https://api.github.com/repos/Wikia/app/pulls{/number}","milestones_url":"https://api.github.com/repos/Wikia/app/milestones{/number}","notifications_url":"https://api.github.com/repos/Wikia/app/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Wikia/app/labels{/name}","releases_url":"https://api.github.com/repos/Wikia/app/releases{/id}","created_at":"2012-08-23T20:55:58Z","updated_at":"2015-08-26T15:36:55Z","pushed_at":"2015-08-26T16:52:47Z","git_url":"git://github.com/Wikia/app.git","ssh_url":"git@github.com:Wikia/app.git","clone_url":"https://github.com/Wikia/app.git","svn_url":"https://github.com/Wikia/app","homepage":"http://dev.wikia.com","size":1480913,"stargazers_count":84,"watchers_count":84,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":66,"mirror_url":null,"open_issues_count":69,"forks":66,"open_issues":69,"watchers":84,"default_branch":"dev"}},"base":{"label":"Wikia:dev","ref":"dev","sha":"b2d7cd375f65fcd760dbe6da4becb6f677302c72","user":{"login":"Wikia","id":1171011,"avatar_url":"https://avatars.githubusercontent.com/u/1171011?v=3","gravatar_id":"","url":"https://api.github.com/users/Wikia","html_url":"https://github.com/Wikia","followers_url":"https://api.github.com/users/Wikia/followers","following_url":"https://api.github.com/users/Wikia/following{/other_user}","gists_url":"https://api.github.com/users/Wikia/gists{/gist_id}","starred_url":"https://api.github.com/users/Wikia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Wikia/subscriptions","organizations_url":"https://api.github.com/users/Wikia/orgs","repos_url":"https://api.github.com/users/Wikia/repos","events_url":"https://api.github.com/users/Wikia/events{/privacy}","received_events_url":"https://api.github.com/users/Wikia/received_events","type":"Organization","site_admin":false},"repo":{"id":5532313,"name":"app","full_name":"Wikia/app","owner":{"login":"Wikia","id":1171011,"avatar_url":"https://avatars.githubusercontent.com/u/1171011?v=3","gravatar_id":"","url":"https://api.github.com/users/Wikia","html_url":"https://github.com/Wikia","followers_url":"https://api.github.com/users/Wikia/followers","following_url":"https://api.github.com/users/Wikia/following{/other_user}","gists_url":"https://api.github.com/users/Wikia/gists{/gist_id}","starred_url":"https://api.github.com/users/Wikia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Wikia/subscriptions","organizations_url":"https://api.github.com/users/Wikia/orgs","repos_url":"https://api.github.com/users/Wikia/repos","events_url":"https://api.github.com/users/Wikia/events{/privacy}","received_events_url":"https://api.github.com/users/Wikia/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Wikia/app","description":"Wikia Application Code","fork":false,"url":"https://api.github.com/repos/Wikia/app","forks_url":"https://api.github.com/repos/Wikia/app/forks","keys_url":"https://api.github.com/repos/Wikia/app/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Wikia/app/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Wikia/app/teams","hooks_url":"https://api.github.com/repos/Wikia/app/hooks","issue_events_url":"https://api.github.com/repos/Wikia/app/issues/events{/number}","events_url":"https://api.github.com/repos/Wikia/app/events","assignees_url":"https://api.github.com/repos/Wikia/app/assignees{/user}","branches_url":"https://api.github.com/repos/Wikia/app/branches{/branch}","tags_url":"https://api.github.com/repos/Wikia/app/tags","blobs_url":"https://api.github.com/repos/Wikia/app/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Wikia/app/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Wikia/app/git/refs{/sha}","trees_url":"https://api.github.com/repos/Wikia/app/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Wikia/app/statuses/{sha}","languages_url":"https://api.github.com/repos/Wikia/app/languages","stargazers_url":"https://api.github.com/repos/Wikia/app/stargazers","contributors_url":"https://api.github.com/repos/Wikia/app/contributors","subscribers_url":"https://api.github.com/repos/Wikia/app/subscribers","subscription_url":"https://api.github.com/repos/Wikia/app/subscription","commits_url":"https://api.github.com/repos/Wikia/app/commits{/sha}","git_commits_url":"https://api.github.com/repos/Wikia/app/git/commits{/sha}","comments_url":"https://api.github.com/repos/Wikia/app/comments{/number}","issue_comment_url":"https://api.github.com/repos/Wikia/app/issues/comments{/number}","contents_url":"https://api.github.com/repos/Wikia/app/contents/{+path}","compare_url":"https://api.github.com/repos/Wikia/app/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Wikia/app/merges","archive_url":"https://api.github.com/repos/Wikia/app/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Wikia/app/downloads","issues_url":"https://api.github.com/repos/Wikia/app/issues{/number}","pulls_url":"https://api.github.com/repos/Wikia/app/pulls{/number}","milestones_url":"https://api.github.com/repos/Wikia/app/milestones{/number}","notifications_url":"https://api.github.com/repos/Wikia/app/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Wikia/app/labels{/name}","releases_url":"https://api.github.com/repos/Wikia/app/releases{/id}","created_at":"2012-08-23T20:55:58Z","updated_at":"2015-08-26T15:36:55Z","pushed_at":"2015-08-26T16:52:47Z","git_url":"git://github.com/Wikia/app.git","ssh_url":"git@github.com:Wikia/app.git","clone_url":"https://github.com/Wikia/app.git","svn_url":"https://github.com/Wikia/app","homepage":"http://dev.wikia.com","size":1480913,"stargazers_count":84,"watchers_count":84,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":66,"mirror_url":null,"open_issues_count":69,"forks":66,"open_issues":69,"watchers":84,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/Wikia/app/pulls/8216"},"html":{"href":"https://github.com/Wikia/app/pull/8216"},"issue":{"href":"https://api.github.com/repos/Wikia/app/issues/8216"},"comments":{"href":"https://api.github.com/repos/Wikia/app/issues/8216/comments"},"review_comments":{"href":"https://api.github.com/repos/Wikia/app/pulls/8216/comments"},"review_comment":{"href":"https://api.github.com/repos/Wikia/app/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Wikia/app/pulls/8216/commits"},"statuses":{"href":"https://api.github.com/repos/Wikia/app/statuses/73d366ad55770eccce58a27cb5ab6860c208bd9b"}}}}